ValueError: Target is multiclass but average=‘binary‘. ‘micro‘、‘macro‘、‘weighted‘ 或 None选择哪一个?完美回答如下

文章讲述了在使用scikit-learn评估多分类模型时遇到的ValueError,原因在于average参数设置为binary。作者解释了多分类指标计算的四种可能设置(micro,macro,weighted,None),并提供了修改后的代码示例,强调根据需求选择适当的average值。
摘要由CSDN通过智能技术生成

在这里插入图片描述

1.原始代码

print("准确度accuracy是: %0.4f" % accuracy_score(Y_test, y_pred2))
print("精确度precision是: %0.4f" % precision_score(Y_test, y_pred2))
print("recall是: %0.4f" % recall_score(Y_test, y_pred2))
print("f1_score是: %0.4f" % f1_score(Y_test, y_pred2))

2. 报错

ValueError: Target is multiclass but average=‘binary’. Please choose another average setting, one of [None, ‘micro’, ‘macro’, ‘weighted’].

3.错误分析

这个错误的意思是,我正在尝试计算多分类的指标(准确率、精确率、召回率和 F1 分数),但是我的 average 参数被设置为 'binary',这是为二分类问题设计的。对于多分类问题,你需要选择 'micro'、'macro'、'weighted' 或 None 这四个设置之一。

scikit-learn 中,precision_score、recall_score 和 f1_score 函数都有 average 参数,这个参数决定了如何计算多分类的指标。

'micro':全局计算,包括每个样本的 True Positives,False Positives 和 False Negatives。
'macro':对每个标签分别计算,然后取平均(不除以标签数)。
'weighted':对每个标签分别计算,然后取加权的平均值(除以每个标签的样本数)。
如果你不设置 average 参数,或者设置为 None,那么这些函数将返回一个字典,其中键是标签名,值是对应标签的指标。

4. 修改后的代码如下:

print("准确度accuracy是: %0.4f" % accuracy_score(Y_test, y_pred2))  
print("精确度precision是: %0.4f" % precision_score(Y_test, y_pred2, average='macro'))  # 可以根据你的需要选择 'micro', 'weighted' 等  
print("recall是: %0.4f" % recall_score(Y_test, y_pred2, average='macro'))  # 可以根据你的需要选择 'micro', 'weighted' 等  
print("f1_score是: %0.4f" % f1_score(Y_test, y_pred2, average='macro'))  # 可以根据你的需要选择 'micro', 'weighted' 等

注意,我选择了 ‘macro’ 作为 average 的值,但你也可以根据你的需求选择其他值。

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值