使用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
相关产品推荐
相关产品推荐

