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

能否通过Tidymodels框架的Parsnip包创建Shape Constrained Additive Model?

如何用Parsnip创建scam包的形状约束可加模型

虽然scam包未出现在Parsnip的官方支持列表中,但可以通过自定义Parsnip模型接口实现整合——Parsnip的设计本身就支持扩展未内置的模型,具体步骤如下:

1. 定义模型基础规范

用new_model()创建模型的核心框架,指定模型类型与基本描述:

scam_model <- parsnip::new_model(
  model = "scam",
  mode = "regression",
  desc = "形状约束可加模型(Shape Constrained Additive Model)",
  details = list(
    package = "scam"
  )
)

2. 绑定scam引擎与拟合逻辑

通过set_engine()将scam包设置为模型引擎,映射拟合所需的函数与参数:

scam_model <- parsnip::set_engine(
  scam_model,
  engine = "scam",
  mode = "regression",
  fit = list(
    interface = "formula",
    protect = c("formula", "data"),
    func = c(pkg = "scam", fun = "scam"),
    defaults = list()
  )
)

3. 定义预测方法

为自定义模型添加预测逻辑,对接scam的predict()函数:

parsnip::set_pred(
  scam_model,
  eng = "scam",
  mode = "regression",
  type = "numeric",
  func = c(fun = "predict"),
  args = list(
    object = quote(object$fit),
    newdata = quote(new_data)
  )
)

4. 常规使用自定义模型

完成上述定义后,即可像使用Parsnip内置模型一样调用scam:

# 安装并加载依赖包
install.packages(c("scam", "parsnip"))
library(parsnip)

# 拟合模型
scam_fit <- scam_model %>%
  fit(y ~ s(x, k = 5, bs = "mpd"), data = your_dataset)

# 生成预测结果
predict(scam_fit, new_data = new_dataset)

注意事项

  • scam特有的参数(如形状约束相关的bs参数)可直接在公式中指定,或通过set_args()方法设置
  • 若需支持分类任务,可扩展mode = "classification"的接口,但scam包主要面向回归场景,分类需求需额外适配预测输出格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 04:10:20