【解决问题】python编译报错 Target is multiclass but average='binary'. Please choose another average setting

今天在编译python代码时,遇到了如下错误:
Target is multiclass but average=‘binary’. Please choose another average setting, one of [None, ‘micro’, ‘macro’, ‘weighted’].

原代码如下,是要求某数据集的F1(精度和召回率组合成单一的指标)。

from sklearn.metrics import precision_score, recall_score

precision_score(y_train, y_train_pred)

解决办法

原代码基础上添加了average=‘micro’。

from sklearn.metrics import precision_score, recall_score

precision_score(y_train, y_train_pred, average='micro')

average参数定义了该指标的计算方法,二分类时average参数默认是binary;多分类时,可选参数有micro、macro、weighted和samples。

None:返回每个班级的分数。否则,这将确定对数据执行的平均类型。

binary:仅报告由指定的类的结果pos_label。仅当targets(y_{true,pred})是二进制时才适用。

micro:通过计算总真阳性,假阴性和误报来全球计算指标。也就是把所有的类放在一起算(具体到precision),然后把所有类的TP加和,再除以所有类的TP和FN的加和。因此micro方法下的precision和recall都等于accuracy。

macro:计算每个标签的指标,找出它们的未加权平均值。这不会考虑标签不平衡。也就是先分别求出每个类的precision再求其算术平均。

weighted:计算每个标签的指标,并找到它们的平均值,按支持加权(每个标签的真实实例数)。这会改变“宏观”以解决标签不平衡问题; 它可能导致F分数不在精确度和召回之间。

samples:计算每个实例的指标,并找出它们的平均值(仅对于不同的多标记分类有意义 accuracy_score)。

参考:https://blog.csdn.net/datongmu_yile/article/details/81750737

你可能感兴趣的:(python,机器学习)