R - 如何设置特定数量的 PCA 组件来训练预测模型

R - how to set a specific number of PCA components to train a prediction model

我想使用 train() 和 preProcess() 构建一个预测模型,使用 PCA 并将前 7 个主要成分作为我的预测变量。

以下有效,但我无法指定 PC 的数量:

predModel2 <- train(diagnosis~., data=training2, method = "glm", preProcess = "pca")

我试过这个来指定 PC 的数量,但我不知道如何将它合并到 train() 中:

training_pre<-preProcess(training[,ILcols],method = c("center", "scale", "pca"),pcaComp= 7)

我试过使用:

predModel2 <- train(diagnosis~., data=training2, method = "glm", preProcess = "pca", pcaComp=7)
Error in train.default(x, y, weights = w, ...) : Stopping

更新: 看来我首先使用 predict() 来解决这个问题:

training2_pca<-predict(training_pre,training2_pca)
train(diagnosis~., data=training2_pca, method = "glm")

所有预处理都应在训练折叠内完成,或者在本例中为重新采样。这会阻止 'data leaks',因此应该首选上述方法中的第一种,例如参见this question.

pcaComp 参数进入 trainControl()。以鸢尾花数据、KNN和前两个主成分为例:

predModel2 <- train(Species~., data=iris, method = "knn", preProcess = "pca",
                    trControl = trainControl(preProcOptions = list(pcaComp = 2)))