sklearn的评估方法

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

猜你喜欢

转载自blog.csdn.net/rucieryi369/article/details/124864446