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

使用tidymodels的step_interact构建ames数据集模型时出现异常错误

错误原因分析与修正

问题根源

你遇到的错误来自step_interact()的语法使用不当:在配方的交互项步骤中,直接在公式里使用starts_with()这类变量选择器函数时,配方无法正确解析选择器表达式,导致解析公式时出现"意外结束输入"的错误。

修正方案

需要用terms()函数包裹包含选择器的交互表达式,让配方能够正确识别并处理选择器生成的变量。修正后的配方代码如下:

# 修正后的Recipe
ames_rec <- recipe(Sale_Price ~ ., data = ames_train) |>
    step_log(Gr_Liv_Area, base = 10) |>
    step_dummy(all_nominal_predictors()) |>
    step_interact( ~ terms(Gr_Liv_Area : starts_with("Bldg_Type"))) |>  # 用terms()包裹选择器表达式
    step_zv(all_numeric_predictors()) |>
    step_normalize(all_numeric_predictors()) |>
    step_pca(matches("(SF$)|(^Bsmt)|(^Garage)"), num_comp = 5) |>
    prep()

额外说明

  • terms()函数的作用是明确告诉配方:当前表达式需要通过变量选择器解析,而非直接当作常规变量名处理。
  • 若不需要对交互项做标准化,可以调整步骤顺序,将step_normalize()移至step_interact()之前,避免交互项被纳入标准化范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 03:12:03