机器学习模型评价指标--分类任务

1.准确率(accuracy)

from sklearn.metrics import accuracy_score
acc = accuracy_score(train_y,pred_y,normalize=True)

normalize=True 返回准确率,False则返回分类正确的个数

准确率的局限性:
1.类别不平衡时。
2.仅关注某一类,然而该类占比极小。

2.精度/查准率(precision)

from sklearn.metrics import precision_score
pre = precision_score(train_y,pred_y,average = None)

average: None :各个类别的精度列表
macro:各个类别的精度平均值(注意类别不平衡)
weight:各个类别加权
micro:多标签问题中,大类被忽略

购物推荐中比较重要

3.召回率(recall)

from sklearn.metrics import recall_score
pre = recall_score(train_y,pred_y,average = None)

average: None :各个类别的精度列表
macro:各个类别的精度平均值(注意类别不平衡)
weight:各个类别加权(权重 = 类别中的样本数量)
micro:多标签问题中,大类被忽略

犯罪检索,疾病监测中比较重要

4.F1值

F1 = 2 * P * R/(P+R)
控制单变量时,F1值是单调递增的。

from sklearn.metrics import f1_score
f1_score(train_y, y_pred, pos_label = 1, average = None)

pos_label指正例的类别。
或者使用下面的方法,一次性输出P,R and f1.

import warnings
warnings.filterwarnings("ignore")
train_y = [1,0,1,0,1,0,1,0,1,1]
y_pred = [0,0,0,0,0,0,0,0,0,0]
from sklearn.metrics import classification_report
target_names=['a','b']
print(classification_report(train_y, y_pred, target_names = target_names))

5.ROC曲线

在面对类别不平衡是,ROC曲线作为评价标准很有用。
查看这个链接
ROC

from sklearn.metrics import roc_curve
roc_curve(train_y,y_pred_prob,pos_label = 1)

pos_label指正例的类别。

猜你喜欢

转载自blog.csdn.net/weixin_44414593/article/details/106987749
今日推荐