私はいくつかのモデルでそれを行うクロスバリデーション機能を作った。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なしですべてのモデルの精度を計算したい各モデルにはsummarise(acc_ksvm = sum(ksvm == class)/n() , acc_rf = sum(rf == class)/n())
と書いてください。
これは適用することができますか?または、モデル別にグループ化するために私のdf
の方法を変更する必要がありますか?
ありがとうございました!その後、
何最適化を目指していますか?速度?これはこれまでのところかなり優雅な解決策であるようです。あなたが探しているのは 'アルゴリズム 'ベクトルにモデルを追加することだけだとすれば、あなたのデータが巨大ではないと仮定した上で、' dplyr'コードはかなりうまくいくと思います。多くのモデル。 – blacksite
あなたは正しいです、多分私は* Optimize *の代わりに* Automate *を書くべきでした。 –