tidymodels中step_corr()无法移除高相关性列?求助
问题分析与解决
你的代码逻辑本身没问题,但可能是以下原因导致高相关列未被移除:
1. 显式指定作用变量(稳妥做法)
虽然step_corr默认对所有预测变量生效,但显式指定all_predictors()可以避免潜在的变量识别问题:
rec <- recipe(y~x1+x2, data = df) %>% step_corr(all_predictors(), threshold=0.9) %>% prep(df)
2. 检查recipes包版本
旧版本的recipes包可能存在step_corr的逻辑bug,建议升级到最新版:
install.packages("recipes")
3. 验证步骤执行结果
执行prep后,可以通过以下命令查看step_corr实际移除了哪些变量:
# 查看第一步的操作细节 tidy(rec, number = 1) # 查看最终保留的变量 summary(rec)
补充说明
step_corr默认会保留公式中先出现的变量,移除后续与它高相关的变量。比如你的案例中,x1先出现,所以会保留x1、移除x2。如果需要自定义保留逻辑,可以通过role参数或者配合step_select调整。
内容的提问来源于stack exchange,提问作者Bilal Khan
相关产品推荐
相关产品推荐

