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

使用TidyModels构建逻辑回归模型遇两类问题求助

解决TidyModels构建逻辑回归模型的两个问题

问题1:混淆矩阵触发conf_mat方法错误

原因

你执行了model_predictions <- model_fit %>% pull(.predictions),这会把预测结果转换成列表格式,而conf_mat()需要数据框输入,因此触发方法不匹配的错误。之前已经用collect_predictions()得到了正确的数据框格式,不需要额外用pull()提取。

解决方案

直接使用collect_predictions()返回的数据框调用conf_mat(),删除pull(.predictions)这一步。


问题2:模型性能指标返回RMSE和RSQ而非Accuracy、ROC-AUC

原因

你用了linear_reg()(线性回归模型),这是针对回归任务的模型,默认输出回归类指标。而你的任务是二分类逻辑回归,需要使用logistic_reg()模型;同时要确保响应变量bankrupt是分类(因子)类型,否则模型会误判为回归任务。

解决方案

  1. 替换模型为logistic_reg(),并指定引擎(比如glm);
  2. 将bankrupt转换为因子类型,明确分类任务;
  3. 通过metric_set()指定需要的二分类指标(accuracy、roc_auc)。

修正后的完整代码

library(tidymodels)

# 数据处理:将bankrupt转为因子类型,明确二分类任务
debt_data <- data %>% 
  select(
    Bankrupt.,
    Interest.bearing.debt.interest.rate,
    Total.debt.Total.net.worth,
    Debt.ratio..,
  ) %>% 
  rename(
    bankrupt = Bankrupt.,
    total_debt_vs_total_net_worth = Total.debt.Total.net.worth,
    debt_ratio = Debt.ratio..
  ) %>%
  mutate(bankrupt = factor(bankrupt, levels = c(0, 1))) # 按实际类别调整levels

set.seed(234589)
debt_split <- initial_split(debt_data, prop = 3/4)
debt_train <- training(debt_split)
debt_test <- testing(debt_split)

# 定义配方
debt_recipe <- recipe(bankrupt ~
                      Interest.bearing.debt.interest.rate +
                      total_debt_vs_total_net_worth +
                      debt_ratio, 
                      data = debt_data) %>% 
                      step_normalize(all_numeric_predictors()) %>%
                      step_impute_knn(all_predictors())

# 构建逻辑回归工作流
model_workflow <- workflow() %>%
  add_recipe(debt_recipe) %>%
  add_model(logistic_reg(engine = "glm"))

# 在测试集上拟合模型
model_fit <- model_workflow %>% 
  last_fit(debt_split)

# 获取指定的二分类性能指标
model_performance <- model_fit %>% collect_metrics(metric = metric_set(accuracy, roc_auc))
model_performance

# 获取预测结果数据框
model_predictions <- model_fit %>% collect_predictions()
model_predictions

# 生成混淆矩阵
model_predictions %>% 
  conf_mat(truth = bankrupt, estimate = .pred_class)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 16:10:27