データフレーム内の応答変数のベクトルの各要素にGAM(スプライン付き)をフィットさせる関数をlapply内に作成しました。最終的に検証のためにデータを列車/テストセットに分割し、さまざまなリサンプリングテクニックを使用したいので、mgcv
またはgam
パッケージを直接使用するのではなく、モデルに合わせてcaret
を使用することを選択しました。私はこのコードを実行するとキャレットで再サンプリングしないGAMメソッドで停止エラーが発生する
# Set resampling method
# tc <- trainControl(method = "boot", number = 100)
# tc <- trainControl(method = "repeatedcv", number = 10, repeats = 1)
tc <- trainControl(method = "none")
fm <- lapply(group, function(x) {
printFormula <- paste(x, "~", inf.factors)
inputFormula <- as.formula(printFormula)
# Partition input data for model training and testing
# dpart <- createDataPartition(mdata[,x], times = 1, p = 0.7, list = FALSE)
# train <- mdata[ data.partition, ]
# test <- mdata[ -data.partition, ]
cat("Fitting:", printFormula, "\n")
# gam(inputFormula, family = binomial(link = "logit"), data = mdata)
train(inputFormula, family = binomial(link = "logit"), data = mdata, method = "gam",
trControl = tc)
})
が、私は次のエラーが表示されます:
Error in train.default(x, y, weights = w, ...) :
Only one model should be specified in tuneGrid with no resampling
私は、コードを再実行する場合は今のところ、私は単純にそうLIKE「none」に設定trainControl
方法を持っています
if (trControl$method == "none" && nrow(tuneGrid) != 1)
stop("Only one model should be specified in tuneGrid with no resampling")
明らかにtrain
機能があるため第二の条件、Bの失敗:caret
はトレーニングプロセスを停止しているデバッグモードでは、私が見つけることができます私がtuning parameters for a GAM(スプライン付き)を見ているときは、機能の選択(興味がない、私はモデル内のすべての予測変数を保持したい)とその方法だけのオプションがあります。したがって、train
に電話すると、tuneGrid
データフレームは含まれません。このようにモデルが失敗している理由はこれですか?どんなパラメータを提供し、tuneGridの外観は何ですか?
私はブートストラップやk倍CVを使用すると、モデルが正常に訓練されたと付け加えるべきですが、これらの再サンプリング方法は計算に時間がかかり、まだ使用する必要はありません。
この問題に関するお役に立てれば幸いです。そのモデルのために
提案した調整パラメータを使用して、GAMモデルにうまくフィットできました。機能の選択が無効で、GCV.Cpを参照していることを理解しています。これは 'mgcv'パッケージの' gam'関数に渡されています。将来、ユーザーはチューニングパラメータのオプションについてどのようなソースを参照できますか? GitHubのウェブサイトでは、ドキュメンテーションは少なくともチューニングパラメータの潜在的なオプションにユーザをリンクさせることができると思います。それはちょうど私の2セントです。ご協力ありがとうございます、私は将来的にはより多くのことをするつもりです! – user2109092