【发布时间】:2020-04-27 04:28:32
【问题描述】:
我正在尝试使用 sklearn 的 roc_auc_score() 函数计算多类问题的 AUC 分数。
我有一个形状为 [n_samples,n_classes] 的预测矩阵和一个形状为 [n_samples] 的地面实况向量,分别命名为 np_pred 和 np_label。
我想要实现的是一组 AUC 分数,我拥有的每个班级都有一个分数。
为此我想使用average参数选项None和multi_class参数设置为"ovr",但如果我运行
roc_auc_score(y_score=np_pred, y_true=np_label, multi_class="ovr",average=None)
我回来了
ValueError: average must be one of ('macro', 'weighted') for multiclass problems
在multiclass 的情况下,sklearn 函数会出现此错误;但是如果你看一下roc_auc_score函数源代码,你可以看到如果multi_class参数设置为"ovr",并且平均值是接受的之一,那么multiClass情况被视为@ 987654323@ 和内部多标签函数accepts None 作为average 参数。
因此,通过查看代码,似乎我应该能够在 One vs Rest 的情况下执行具有 None 平均值的多类,但源代码中的 ifs 不允许这种组合。
我错了吗?
如果我错了,从理论的角度来看,我应该伪造一个多标签案例,只是为了让不同的类具有不同的 AUC,还是应该编写自己的函数来循环不同的类并输出 AUC?
谢谢
【问题讨论】:
标签: python machine-learning scikit-learn auc