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

使用Vetiver监控tidymodels堆叠集成模型遇不支持问题

问题:Vetiver不支持堆叠集成模型(butchered_linear_stack)的augment方法

代码片段

library(tidymodels)
library(vetiver)
library(pins)
library(arrow)
library(tidyverse)
library(bonsai)
library(stacks)
library(lubridate)
library(magrittr)

b <- board_folder(path = "pins-r/")
model <- vetiver_pin_read(board = b, name = "dcp_ibese_truck_arrival", 
                      version = "20230110T094207Z-69661")

trips <- read_parquet("../IbeseLivePosition/ml_data/data_to_monitor_model.parquet")

trips %<>%
  mutate(Date = as.Date(DateTimeReceived))

original_metrics <- 
  vetiver::augment(model, new_data = trips)

报错信息

Error: No augment method for objects of class butchered_linear_stack

解决方法

  • 关闭模型精简后重新保存
    Vetiver默认会用butcher精简模型以减小体积,但这会把堆叠模型转为butchered_linear_stack类,导致Vetiver无法识别。重新保存模型时关闭精简:

    vetiver_pin_write(
      board = b,
      model = your_stack_model,
      name = "dcp_ibese_truck_arrival",
      butcher = FALSE
    )
    

    重新读取模型后即可正常调用augment()。

  • 自定义augment方法
    如果无法重新保存模型,为butchered_linear_stack类手动实现augment逻辑:

    augment.butchered_linear_stack <- function(x, new_data, ...) {
      preds <- stacks::predict(x, new_data = new_data, type = "pred")
      new_data %>% bind_cols(preds)
    }
    

    定义完成后,原代码中的vetiver::augment()即可正常运行。

  • 直接调用stacks的预测函数
    绕过Vetiver的augment,手动拼接预测结果:

    original_metrics <- trips %>%
      bind_cols(predict(model, new_data = ., type = "pred"))
    

内容的提问来源于stack exchange,提问作者Olumide Michael Oyalola

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:10:27