python - roc_auc_score 用于多类分类,AxisError:轴 1 超出了维度 1 数组的范围
问题描述
我有一个以 RandomForestRegressor 作为估计器的管道。(您不必检查管道,它适用于任何估算器)。
目标包含 5 个类,我想计算roc_auc_score
. 在阅读了关于函数的 Sklearn用户指南后,我了解到要计算每个类的 ROC AUC,您必须使用以下语法:
# Compute roc_auc for class 0
roc_auc_score(
y_test,
pipeline.predict_proba(X_test)[:, 0],
multi_class="ovr",
average="macro",
)
但这给了我这个错误:
AxisError: axis 1 is out of bounds for array of dimension 1
我在这里发现了一个类似的问题,但该线程没有帮助。当我将上面的代码更改为:
# Remove the class subsetting
roc_auc_score(
y_test,
logreg_pipeline.predict_proba(X_test),
multi_class="ovr",
average="macro",
)
我没有用 指定第一个类[:, 0]
,而是传递了您从中获得的整个 numpy 数组predict_proba
,它返回的分数为 0.92。我应该假设这个分数是所有 5 个班级的 roc_auc 的宏观平均值吗?
PS目标没有编码,因为目标中有5个类,predict_proba返回一个包含5列的numpy数组
解决方案
推荐阅读
- c - 4字节单元流和3字节单元流之间的转换
- java - 为什么对非易失性的写入对主线程可见?
- php - 制作一个包含两个单独值的表单类型,您可以使用 symfony 4 添加多次
- node.js - 如何在 NodeJS 中使用带有 restify 的 actions-on-google dialogflow
- javascript - 通过删除所有查询参数来响应路由器渲染两次和 URL 更改
- swift - RealityKit – 平面检测
- android - 未抛出 RxJava MissingBackpressureException
- flutter - 如何使用 api rest 和 sqflite 以最少的代码离线和在线创建应用程序
- python - 如何使用 Django 将 PDF 嵌入到我的模板中?
- python - Python 中 Try 和 except 的更快替代方案