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

Python机器学习SGD多分类调用roc_curve触发multiclass格式不支持报错求助

问题原因
  • sklearn的roc_curve接口原生仅支持二分类任务的ROC计算,你使用的红酒数据集是3分类任务,直接传入多类别标签y_test和3列的决策函数输出y_score会触发格式不支持报错
  • 原有代码循环计算每个类别的ROC时,没有对标签做二值化转换,也没有按类别切片取对应的决策值,是触发错误的直接原因
修复方案

将原有ROC计算的代码段替换为以下内容即可:

# 先对测试集标签做二值化处理,转为one-hot格式
y_test_bin = label_binarize(y_test, classes=[0,1,2])
y_score = best_clf.decision_function(X_test[:,[best_f1, best_f2]])
# 绘制ROC曲线并计算AUC     
fpr = dict()
tpr = dict()
roc_auc = dict()
for i in range(nclasses):
    # 针对每个类别,取对应二值化后的标签和对应类别的决策值
    fpr[i], tpr[i], _ = roc_curve(y_test_bin[:, i], y_score[:, i])
    roc_auc[i] = auc(fpr[i], tpr[i])
其他可修复的已知问题
  • 原有代码绘制测试集散点时定义的colors = ['cyan','orange']只有2个颜色,3分类任务会触发索引越界,修改为3个颜色即可,比如colors = ['cyan','orange','purple']
  • 原有代码重复创建了两次决策边界的画布,可删掉一段重复的画布创建和绘图逻辑,避免生成多余空白图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:39:04