scikit-learn报”ValueError: Target is multiclass but average=’binary’. Please choose another average setting, one of [None, ‘micro’, ‘macro’, ‘weighted’]. “的原因以及解决办法

问题原因

该错误通常是因为在使用scikit-learn进行二分类问题的度量时,选择了平均值(average)参数为binary,但是目标(target)是多类别的。这导致了scikit-learn无法进行正确的二分类度量,因为它会将所有多类别目标都视为正例或反例中的一类。

解决办法

解决这个问题有两种方法。第一种方法是将平均值参数设置为None,这样scikit-learn将会直接返回多类别目标的指标。使用这种方法计算多分类问题指标时,需要注意是否使用了正确的指标类型。

另一种方法是选择适当的平均值参数。如果要将评估结果汇总为单个数值,可以使用'micro'或'macro'平均大多数情况下都可以正常使用,根据具体情况选择适合该问题的指标类型。

下面是一个解决多分类问题报错的示例代码:

from sklearn.metrics import precision_score

y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]
precision_score(y_true, y_pred, average='macro')

输出结果为:

0.22

另外,如果需要计算多个不同的平均值,可以使用weighted参数来加权平均计算指标。这种方法通常在目标各自的大小相差较大时使用。

from sklearn.metrics import precision_score

y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]
precision_score(y_true, y_pred, average='weighted')

输出结果为:

0.26666666666666666

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:scikit-learn报”ValueError: Target is multiclass but average=’binary’. Please choose another average setting, one of [None, ‘micro’, ‘macro’, ‘weighted’]. “的原因以及解决办法 - Python技术站

(0)
上一篇 2023年3月19日
下一篇 2023年3月19日

相关文章

合作推广
合作推广
分享本页
返回顶部