如何从parsnip拟合对象中提取预测变量?
从tidymodels拟合对象中提取预测变量列表
方法1:从配方预处理结果中提取
如果你的rf_xy_fit是基于配方(recipe)构建的,可直接从拟合对象的预处理模块中提取保留的预测变量:
# 提取预处理后的配方对象 prepped_rec <- rf_xy_fit$preproc # 筛选并提取最终保留的预测变量名 preds_from_fit <- prepped_rec$var_info %>% dplyr::filter(role == "predictor" & retained) %>% dplyr::pull(variable)
方法2:从模型变量重要性中提取
若你的随机森林模型计算了变量重要性,也可直接从重要性结果中获取变量名(适用于所有保留的预测变量都在重要性列表中的场景):
# 从拟合模型中提取变量重要性的名称 preds_from_fit <- names(rf_xy_fit$fit$variable.importance)
验证与使用
提取后可先验证变量数量是否符合预期:
length(preds_from_fit) # 应返回33
后续预测时,直接用提取的变量列表处理新数据即可:
# 筛选新数据中的目标预测变量 new_data_filtered <- new_data %>% dplyr::select(all_of(preds_from_fit)) # 执行预测 predict(rf_xy_fit, new_data_filtered)
这样无需单独保存preds列表,直接从rf_xy_fit中提取即可,避免了分开存储的繁琐与出错风险。
内容的提问来源于stack exchange,提问作者littleworth
相关产品推荐
相关产品推荐

