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

Posted

技术标签:

【中文标题】将 PCA 预处理参数传递给 train()【英文标题】:Pass PCA preprocessing arguments to train() 【发布时间】:2015-06-19 18:17:22 【问题描述】:

我正在尝试使用 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】:

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

虽然文档不是最令人兴奋的阅读,但一定要确保尝试阅读它。包作者努力创建文档,其中有许多奇迹。

【讨论】:

正是我想要的。

以上是关于将 PCA 预处理参数传递给 train()的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义参数传递给事件处理程序

将额外参数传递给事件处理程序?

如何将事件和其他参数传递给单击处理程序

如何将参数传递给我的处理程序

将参数输入参数传递给批处理文件

仅在将参数传递给程序时使用 openMP