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

17

我正在尝试使用caret构建一个预测模型,其中使用PCA作为预处理。预处理步骤如下:

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

我可以直接将thresh参数传递给caret的train()函数吗?我已经尝试过以下方法,但并没有起作用:

是否可以直接将thresh参数传递给caret的train()函数?我尝试了下面的方法,但它不起作用:

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

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


3
这是一个很好的问题。感谢您提出它。 - ahoffer
1个回答

24

根据文档,您可以使用 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.
...

既然你的数据集不可重现,让我们看一个例子。我会使用来自 mlbenchSonar 数据集,并仅出于娱乐目的使用 pls 算法。

library(caret)
library(mlbench)

data(Sonar)

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

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

尽管文档不是最令人兴奋的阅读材料,但一定要尝试去学习并阅读。包的作者们努力编写文档,并且其中有许多奇妙之处。


正是我所需要的。 - Steve Rowe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接