使用tidymodels时出现‘Object '.' not found’错误的求助
解决‘object '.' not found’错误的方法
最可能的触发原因是你配方里的step_dummy用了all_nominal(),如果响应变量advfront是名义/因子类型,这个函数会把它也纳入哑变量转换,导致建模时变量匹配失败,进而触发错误。
修复步骤
- 修改配方中的哑变量转换逻辑,只对预测变量处理:
set.seed(1234) # 用all_nominal_predictors()替代all_nominal(),自动排除响应变量 gss16_rec_1 <- recipe(advfront ~ educ, data = gss16_train) %>% step_dummy(all_nominal_predictors(), one_hot = TRUE) gss16_mod_1 <- logistic_reg() %>% set_engine("glm") gss16_wflow_1 <- workflow() %>% add_recipe(gss16_rec_1) %>% add_model(gss16_mod_1) gss16_fit_1 <- gss16_wflow_1 %>% fit(data = gss16_train)
- 若问题仍存在,执行以下排查:
- 确认
gss16_train在当前环境中未被误删或改名,可运行ls()查看环境变量列表。 - 检查响应变量
advfront是否为二分类:运行table(gss16_train$advfront),逻辑回归要求响应变量只能有两个水平。 - 测试简化流程定位问题:
# 单独测试配方预处理+ glm建模 prepped_data <- prep(gss16_rec_1) %>% bake(new_data = NULL) test_fit <- glm(advfront ~ ., data = prepped_data, family = binomial)
如果这段代码报错,说明配方预处理后的变量存在问题;如果能正常运行,再尝试用公式替代配方测试工作流:
gss16_wflow_2 <- workflow() %>% add_formula(advfront ~ educ) %>% add_model(gss16_mod_1) gss16_fit_2 <- gss16_wflow_2 %>% fit(data = gss16_train)
内容的提问来源于stack exchange,提问作者Leonardo
相关产品推荐
相关产品推荐

