1. sklearn.metrics.accuracy_score(y_true,y_pred,*,normalize=True,sample_weight=None)
其中,y_true表示真实标签;y_pred表示预测的标签;normalize表示是否对结果进行归一化处理;sample_weight表示样本的权重。
二分类的计算方式:
from sklearn.metrics import accuracy_score
y_pred = [0, 2, 1, 3]
y_true = [0, 1, 2, 3]
accuracy_score(y_true, y_pred):0.5
accuracy_score(y_true, y_pred, normalize=False):2
多标签的计算方式:
import numpy as np
accuracy_score(np.array([[0, 1], [1, 1]]), np.ones((2, 2))):0.5
其中,y_true和y_pred都表示成0,1的形式。
2. sklearn.metrics.f1_score(y_true,y_pred,*,labels=None,pos_label=1,average='binary',sample_weight=None,zero_division='warn')
其中,y_true表示真实标签;y_pred表示预测的标签;
labels表示要计算哪些类别的F1值。
average对于多分类和多标签是必须的,有{'micro’, ‘macro’, ‘samples’,’weighted’, ‘binary','None'}六个类型,
其中'None'表示返回每个类别的分数;
'binary'表示返回指定pos_label的类结果,仅适用于二分类情况;
'micro’表示通过计算总的真阳性、假阴性和假阳性来全局计算指标;
'macro’表示每个类别的指标,并计算他们未加权的平均值;
'weighted’计算每个类别的指标,并计算加权的平均值;能够一定程度解决'macro'类别不平衡的问题;
'samples’表示计算每个实例的指标,并计算平均值;
zero_division表示当出现除数为零的情况
不同average
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
多标签
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])
labels:计算指定类别的值
metrics.f1_score(y_true, y_pred, labels=[1, 2], average='micro'):0.0