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

1.准确率(accuracy)

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

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

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

2.精度/查准率(precision)

简单的说,就是预测成x的类别中,真正是x的概率。
sklearn官网
使用时请查看官网,这里不写详细了,因为写详细了到用的时候也需要查官网。

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

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

购物推荐中比较重要

3.召回率(recall)

召回率的应用角度与精度相反,召回率的概念是类别x中共有n个样本,有多少个样本被分类到x类中去了。

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纵轴的含义是所有的1类中,被识别的概率。
ROC横轴的含义是所有的0类中,被识别的概率。
所以在ROC中越接近上角越nice。
PS:其实横轴若改成:ROC横轴的含义是所有的0类中,被识别的概率。那么就变成了越接近右上角越nice。

查看这个链接
ROC
ROC&AUC

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

pos_label指正例的类别。

AUC

若分类器可以输出样本属于1类的概率,那么可以给概率一个阈值,大于阈值则分类呈1,小于阈值则分类成0。阈值变化,则就会绘制多个ROC,连接成ROC曲线,ROC的面积就是AUC,AUC越大,分类器越nice。

PR曲线与ROC的区别

当测试集的类别不平衡且类别比例发生变化时,PR曲线会发生严重的变化,但是ROC变化并不大。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值