You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用tidymodels调优recipe包step_impute_knn的neighbors参数

用tidymodels工作流自动调优step_impute_knn的neighbors参数

当然可以通过tidymodels工作流实现step_impute_knn中neighbors参数的自动网格搜索调优,核心是把配方步骤里的参数标记为tune(),再结合工作流、交叉验证和网格搜索完成调优,完全不需要手动调整。

完整实现示例

以下是基于混合类型缺失值数据集的完整代码流程:

1. 加载工具包并准备数据

library(tidymodels)
tidymodels_prefer()

# 构造含缺失值的混合类型示例数据
set.seed(123)
data <- tibble(
  num1 = c(rnorm(80), rep(NA, 20)),
  num2 = c(rnorm(75), rep(NA, 25)),
  cat1 = sample(c("A", "B", "C"), 100, replace = TRUE),
  cat2 = sample(c("X", "Y"), 100, replace = TRUE),
  target = rnorm(100)
)

# 拆分数据集并创建交叉验证折
data_split <- initial_split(data, prop = 0.8)
data_train <- training(data_split)
data_test <- testing(data_split)
data_folds <- vfold_cv(data_train, v = 5)

2. 定义带调优参数的预处理配方

把step_impute_knn的neighbors参数标记为tune(),该步骤会自动用Gower距离处理混合类型变量:

impute_recipe <- recipe(target ~ ., data = data_train) %>%
  step_dummy(all_nominal_predictors()) %>%
  step_impute_knn(all_predictors(), neighbors = tune())

3. 定义模型并组合工作流

这里以线性回归为例,你可以替换成任何符合任务需求的parsnip模型:

# 定义模型
lm_model <- linear_reg() %>%
  set_engine("lm") %>%
  set_mode("regression")

# 组合工作流(配方+模型)
impute_workflow <- workflow() %>%
  add_recipe(impute_recipe) %>%
  add_model(lm_model)

4. 创建调优网格并执行网格搜索

指定neighbors的候选范围,通过交叉验证评估不同参数的效果:

# 创建调优网格,生成5个候选值
impute_grid <- grid_regular(neighbors(range = c(3, 15)), levels = 5)

# 执行网格搜索调优
impute_tune <- tune_grid(
  object = impute_workflow,
  resamples = data_folds,
  grid = impute_grid,
  metrics = metric_set(rmse)  # 回归任务用RMSE,分类任务可替换为accuracy/roc_auc等
)

5. 查看调优结果并应用最优参数

# 查看最优参数候选
show_best(impute_tune, metric = "rmse")

# 选择最优参数并更新工作流
best_impute <- select_best(impute_tune, metric = "rmse")
final_workflow <- finalize_workflow(impute_workflow, best_impute)

# 在测试集验证最终效果
final_fit <- last_fit(final_workflow, data_split)
collect_metrics(final_fit)

关键说明

  • tidymodels支持对预处理步骤参数和模型参数同时调优,无需局限于模型本身的参数
  • step_impute_knn默认使用Gower距离处理混合类型变量,调优neighbors不会改变这一距离度量逻辑
  • 评估指标需根据任务类型(分类/回归)选择对应的指标集合,确保调优方向符合业务需求

内容的提问来源于stack exchange,提问作者GreenManXY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 13:30:34