データセットに対してさまざまなモデリング アルゴリズムを実行しています。入力変数を一度に 1 つずつ応答にモデル化することで、最良の結果が得られました。
model <- train(y ~ x1 + x2 + ... + xn, ...)
モデルをトレーニングしたら、毎回再実行したくないので、.rda
ファイルとして保存しようとしています。ランダム フォレスト モデルのループの例を次に示します (ループよりも優れた方法を自由に提案してください!)。
# data_resp contains my measured responses, one per column
# data_pred contains my predictors, one per column
for (i in 1:ncol(data_resp)) {
model <- train(data_pred_scale[!is.na(data_resp[, i]), ],
data_resp[!is.na(data_resp[, i]), i],
method = "rf",
tuneGrid = data.frame(.mtry = c(3:6)),
nodesize = 3,
ntrees = 500)
save(model, file = paste("./models/model_rf_", names(data_resp)[i], ".rda", sep = ""))
ただし、モデルをロードすると、 と呼ばれmodel
ます。
モデルを対応する名前で保存して、後で参照するための良い方法が見つかりませんでした。次のように、オブジェクトを文字列に割り当てることができることがわかりました。
assign(paste("./models/model_rf_", names(data_resp)[i], ".rda", sep = ""), train(...))
しかし、オブジェクトを保存するときにオブジェクトを参照する方法がまだ残っています。
save(???, file = ...)
カスタム名でオブジェクトを呼び出す方法がわかりません。
最後に、ロードでも問題が発生しました。試してみましassign("model_name", load("./model.rda"))
たが、呼び出された結果のオブジェクトstring
は、オブジェクト名「モデル」の文字列を保持するだけになります。
周りを見回すと、関連しているように見えるこの質問が見つかりましたが、それを自分の状況に適用する方法を見つけようとしています。
data_resp
(測定された応答)の各列名の名前を含むリストを作成し、 を使用することもできますがlapply
、train()
結果のモデルを保持するために新しいオブジェクト名を動的に参照する方法にまだ少し固執しています。