【问题标题】:Include scale.=F as argument for preProcess within caret train?包括 scale.=F 作为插入符号序列中 preProcess 的参数?
【发布时间】:2020-12-27 13:23:00
【问题描述】:

我正在研究一个分类问题。在我的数据处理中,我使用 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")

【问题讨论】:

    标签: r pca r-caret standardized


    【解决方案1】:

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

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

    如果这有帮助,请告诉我:)

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2022-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多