gpt4 book ai didi

python - sklearn roc_auc_score 与 multi_class= ="ovr"应该没有可用的平均值

转载 作者:行者123 更新时间:2023-11-30 08:44:53 29 4
gpt4 key购买 nike

我正在尝试使用 sklearn 的 roc_auc_score() 函数计算多类问题的 AUC 分数。

我有形状为 [n_samples,n_classes] 的预测矩阵和形状为 [n_samples] 的地面实况向量,分别命名为 np_prednp_label

我想要实现的是一组 AUC 分数,我所拥有的每个类(class)都有一个分数。

为此,我想使用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 情况被视为 multiLabel one,内部 multiLabel 函数 accepts None 作为 average 参数。

因此,通过查看代码,我似乎应该能够在 One vs Rest 情况下以 None 平均值执行多类,但是 源代码中的if不允许这样的组合。

我错了吗?

如果我错了,从理论的角度来看,我应该伪造一个多标签案例,以便为不同的类别提供不同的 AUC,还是应该编写自己的函数来循环不同的类别并输出 AUC?

谢谢

最佳答案

根据sklearn documentation ,multi_class 的默认参数是 'raised',在文档中提到,默认参数会抛出异常,因此您必须明确提及 ovrovo multi_class='ovr'

请参阅随附的屏幕截图

Mention Explicitly of ovr or ovo, rather than using default value

关于python - sklearn roc_auc_score 与 multi_class= ="ovr"应该没有可用的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59666138/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com