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

在R中使用Vetiver时,分类模型调用compute_metrics为何报metric_set错误?

解决Vetiver中分类模型监控指标计算的metric_set错误

问题诊断

你遇到的metric_set相关错误,核心原因有两个:

  • 分类模型通过augment()生成的预测列是.pred_class,但vetiver_compute_metrics()默认使用回归场景的.pred作为预测列,导致无法匹配分类指标的计算要求
  • 调用vetiver_compute_metrics()时参数传递的顺序或命名不明确,引发指标计算逻辑错误

修正后的代码

library(parsnip)
library(recipes)
library(workflows)
library(tidyverse)
library(vetiver)
library(pins)
library(plumber)
library(yardstick) # 显式加载yardstick,metric_set依赖该包

data(bivariate, package = "modeldata")

# 数据预处理与模型训练
biv_rec <-
  recipe(Class ~ ., data = bivariate_train) %>%
  step_BoxCox(all_predictors()) %>%
  step_normalize(all_predictors())

svm_spec <-
  svm_linear(mode = "classification") %>%
  set_engine("LiblineaR")

svm_fit <- 
  workflow(biv_rec, svm_spec) %>%
  fit(sample_frac(bivariate_train, 0.7))

# 模型封装与部署相关操作(保留原有逻辑)
v <- vetiver_model(svm_fit, "biv_svm")
model_board <- board_temp(versioned = TRUE)
model_board %>% vetiver_pin_write(v)
model_board %>% pin_versions("biv_svm")
pr() %>% vetiver_api(v)
vetiver_write_plumber(model_board, "biv_svm")

# 准备带时间戳的验证数据
bivariate_val$date_obs <- seq(from = as.Date("2021-01-01"), to = as.Date("2021-10-27"), by = 'day')
newData1 <- bivariate_val[1:150,]

# 定义分类指标集
class_metrics_T <- metric_set(accuracy, kap)

# 修正后的指标计算逻辑
original_metrics <-
  augment(v, new_data = newData1) %>%
  vetiver_compute_metrics(
    timestamp = date_obs,
    period = "week",
    truth = Class,
    estimate = .pred_class, # 关键:指定分类模型的预测列
    metrics = class_metrics_T
  )

# 查看计算结果
original_metrics

关键修正说明

  • 显式加载yardstick包:metric_set()是yardstick包的核心函数,显式加载可避免命名空间冲突导致的函数调用失败
  • 指定分类预测列:分类模型执行augment()后,类别预测结果存储在.pred_class列,必须显式通过estimate参数指定,替代默认的回归场景列.pred
  • 使用命名参数传递:避免参数顺序混淆,让代码逻辑更清晰,降低后续维护成本

修正后,original_metrics会按周聚合输出分类模型的accuracy和kappa指标,可直接通过vetiver_plot_metrics()生成监控可视化图表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:20:35