首页 > 解决方案 > 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数组

标签: pythonscikit-learnrandom-forestmulticlass-classification

解决方案


推荐阅读