将PCA预处理参数传递给train()

时间:2015-04-14 08:11:28

标签: r machine-learning pca r-caret

我正在尝试使用PCA作为预处理在插入符号中构建预测模型。预处理如下:

preProc <- preProcess(IL_train[,-1], method="pca", thresh = 0.8)

是否可以将thresh参数直接传递给插入符号的train()函数?我尝试了以下内容,但它不起作用:

modelFit_pp <- train(IL_train$diagnosis ~ . , preProcess="pca",
                            thresh= 0.8, method="glm", data=IL_train)

如果没有,我如何将单独的preProc结果传递给train()函数?

1 个答案:

答案 0 :(得分:22)

根据文档,您可以使用trainControl

指定其他预处理参数
?trainControl

...
preProcOptions  

A list of options to pass to preProcess. The type of pre-processing 
(e.g. center, scaling etc) is passed in via the preProc option in train.
...

由于您的数据集不可重现,让我们看一个例子。我将使用Sonar中的mlbench数据集,并使用pls算法,只是为了好玩。

library(caret)
library(mlbench)

data(Sonar)

ctrl <- trainControl(preProcOptions = list(thresh = 0.95))

mod <- train(Class ~ ., 
             data = Sonar, 
              method = "pls",
              trControl = ctrl)

虽然文档不是最令人兴奋的阅读,但一定要确保尝试通过它。包装作者努力创建文档,并且可以在其中找到许多奇迹。