我做了一個交叉驗證函數,它爲幾個模型。如何優化R中多個預測模型的準確性代碼?
我有我想要計算模型的功能,並在交叉驗證我打電話,所以我會得到一個名爲results
與類或標籤數據幀,針對每個預測爲每次迭代:
head(results)
iteration class ksvm rf
65 1 4 4 4
306 1 2 2 2
300 1 4 4 4
385 1 2 2 2
431 1 2 2 2
205 1 4 4 4
(該索引可以忽略,因爲它來自被採樣的數據)。
由於我有一個5倍交叉驗證,我有5個迭代預測在這種情況下ksvm
和。 (這些被存儲在一個名爲algorithms
變量
這個我計算的準確性這種方式後:
results %>%
group_by(iteration) %>%
summarise(acc_ksvm = sum(ksvm == class)/n() , acc_rf = sum(rf == class)/n())
輸出:
iteration acc_ksvm acc_rf
(int) (dbl) (dbl)
1 1 0.9603175 0.9603175
2 2 0.9760000 0.9680000
3 3 0.9603175 0.9523810
4 4 0.9840000 0.9920000
5 5 0.9444444 0.9523810
問: 有沒有一種辦法優化它?我最終會增加模型,我只想通過algorithms
變量在一個函數中,並計算所有模型的準確性,而不需要manuall y爲每個型號書寫summarise(acc_ksvm = sum(ksvm == class)/n() , acc_rf = sum(rf == class)/n())
。
這可以通過應用來完成嗎?或者我是否必須改變我的df
的構建方式,以便按模型分組?
謝謝!
什麼你在尋找優化嗎?速度?這似乎是迄今爲止相當優雅的解決方案。如果你所要做的只是將模型添加到'算法'向量中,我認爲你上面的'dplyr'代碼做得很好,假設你的數據不是*巨大的*,並且你沒有測試許多參數許多型號。 – blacksite
你是對的,也許我應該寫*自動*而不是*優化*。 –