包含 scale.=F 作为插入符序列中 preProcess 的参数?

Include scale.=F as argument for preProcess within caret train?

我正在处理分类问题。在我的数据处理过程中,我使用 bestNormalize() 估计了对正态性的最佳转换。在此步骤中,我对所有预测变量进行了标准化。

我使用 PCA 作为预处理步骤,在训练步骤中对我的数据进行去相关。我无法包含附加参数 scale.=F 以防止数据再次标准化。插入符号文档指出 “如果请求 PCA 但未请求居中和缩放,则值仍将居中和缩放。”。我写信是想询问两次标准化是否会导致问题,以及如何在预处理步骤中使用 PCA 而无需再次标准化预测变量。

下面的没用,我相信

my_ctrl <- trainControl(method='repeatedcv', 
                        number=5, 
                        repeats=5, 
                        search='grid',
                        preProcOptions = list(thresh=0.95,scale.=F),  #including scale argument via preProcOptions
                        classProbs = T,
                        summaryFunction = twoClassSummary,
                        savePredictions=T, 
                        index=createResample(y_train, 5))

lg <- train(y=y_train, x=X_train, method='glm', trControl=my_ctrl, preProcess='pca', metric="ROC", family="binomial")

PCA有两种流行的方式:prcomp(x, scale = FALSE)princomp(x, cor = FALSE, scores = TRUE)

也许你可以试试这些方法中的一种,这样你就不会标准化两次了。 此外,如果您标准化两次应该不会有问题,因为第二次您的预测变量应该不会发生任何事情,因为它们已经标准化了。

如果有帮助请告诉我:)

您可以考虑的另一种解决方案是通过将 standardize = FALSE 设置为选项来告诉 bestNormalize 不进行标准化。您不会进行双重标准化,因为标准化会在后面的 PCA 步骤中发生。