使用sklearn.metrics时报错:ValueError: Target is multiclass but average=‘binary‘.

使用sklearn.metrics时报错:ValueError: Target is multiclass but average='binary'. Please choose another average setting, one of [None, 'micro', 'macro', 'weighted'].

解决:

from sklearn.metrics import f1_score, recall_score, precision_score

# 对于多分类任务
f1 = f1_score(gt_label_list, pd_score_list)
recall = recall_score(gt_label_list, pd_score_list)
precision = precision_score(gt_label_list, pd_score_list)
# 改为
f1 = f1_score(gt_label_list, pd_score_list, average='macro')
recall = recall_score(gt_label_list, pd_score_list, average='macro')
precision = precision_score(gt_label_list, pd_score_list, average='macro')

F1分数可以被解释为精确度Precision和召回率Recall的谐波平均值,其中F1分数在1时达到最佳值,在0时达到最差值。F1分数的计算公式为:

F1 = 2 * (precision * recall) / (precision + recall)

在多类和多标签的情况下,F1 score是每一类F1平均值,其权重取决于average参数(recall、precision均类似)。

average{‘micro’, ‘macro’, ‘samples’, ‘weighted’, ‘binary’} or None, default=’binary’

  • 'binary': 适用于二分类
  • 'micro': 通过计算真阳性、假阴性和假阳性的总数,在全局范围内计算指标;
  • 'macro':计算每个标签的度量,并找到它们的非加权平均值,不考虑标签的不平衡性;
  • 'weighted': 计算每个标签的指标,并找到它们的平均数,按每个标签的真实实例数加权,考虑标签的不平衡;它可能导致F分数不在精确性和召回率之间;
  • 'samples': 计算每个实例的指标,并找出其平均值,与accuracy_score不同,只有在多标签分类中才有意义;
# Example
>>> from sklearn.metrics import f1_score
>>> y_true = [0, 1, 2, 0, 1, 2]
>>> y_pred = [0, 2, 1, 0, 0, 1]
>>> f1_score(y_true, y_pred, average='macro')
0.26...
>>> f1_score(y_true, y_pred, average='micro')
0.33...
>>> f1_score(y_true, y_pred, average='weighted')
0.26...
>>> f1_score(y_true, y_pred, average=None)
array([0.8, 0. , 0. ])
>>> y_true = [0, 0, 0, 0, 0, 0]
>>> y_pred = [0, 0, 0, 0, 0, 0]
>>> f1_score(y_true, y_pred, zero_division=1)
1.0...
>>> # multilabel classification
>>> y_true = [[0, 0, 0], [1, 1, 1], [0, 1, 1]]
>>> y_pred = [[0, 0, 0], [1, 1, 1], [1, 1, 0]]
>>> f1_score(y_true, y_pred, average=None)
array([0.66666667, 1.        , 0.66666667])

Reference:

sklearn.metrics.f1_score官方文档:sklearn.metrics.f1_score — scikit-learn 1.2.2 documentation

猜你喜欢

转载自blog.csdn.net/daydayup858/article/details/130111894
今日推荐