如何在 R caret 包中执行主成分回归后提取成分以进行进一步分析

2023-12-01

我有一个包含 151 个变量的数据集,这些变量被发现具有很高的共线性,因此我通过执行以下操作对其进行主成分回归:-

ctrl <- trainControl(method = "repeatedcv", repeats = 10, savePred = T)
model <- train(RT..seconds.~., data = cadets100, method = "pcr", trControl = ctrl)

这给了我:- RMSE = 65.7 R 平方 0.443

我只是想知道之后如何提取这些组件,以便我可以说应用进一步的分析(即对其执行 SVM 或随机森林)


如果你想在你的 PC 分数之上进行 SVM、RF 或任何第二分类器,那么有一个捷径,而不是尝试重新发明caret包裹。

您可以执行以下操作:

set.seed(1)
sigDist <- sigest(RT..seconds.~., data = cadets100, frac = 1)

svmGrid <- expand.grid(.sigma = sigDist, .C = 2^(-2:7))
set.seed(2)
svmPCAFit <- train(RT..seconds.~.,
                  method = "svmRadial",
                  tuneGrid = svmrGrid,                  
                  preProcess = c("center","scale","pca"), # if center and scale needed
                  trControl = ctrl)

这样,PCA 将在每次测试中进行,并且将使用分数而不是 SVM 分类器的观察结果。所以你不需要自己做,caret 会自动为你做。您在预处理中传递的所有内容都将应用于新数据集,无论是 CV 折叠测试还是拟合保留测试集。

但是,如果您想在将分数传递给下一个分类器之前执行 PLS(这是一种与 PCA 不同的监督方法),那么您必须在插入符号中自定义这样的模型(请参阅here)。有关示例的更多信息,您可以研究代码here此外,您还可以找到两种定制模型,一种用于 PLS-RF,一种用于 PLS-LDA。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 R caret 包中执行主成分回归后提取成分以进行进一步分析 的相关文章

随机推荐