python - sklearn 计算查准率

因为最近写的分类模型需要性能评价 ,常用的分类性能评价有 查准率、召回率、准确率、F1

分类问题的常用的包 sklearn ,下面对查准率所用的方法进行介绍

召回率 请看另外一篇文章: sklearn 计算召回率

前提知识

对于我们的二分类问题,会有以下情况:

  • 真正例(True Positive,TP):真实类别为正例,预测类别为正例。
  • 假正例(False Positive,FP):真实类别为负例,预测类别为正例。
  • 假负例(False Negative,FN):真实类别为正例,预测类别为负例。
  • 真负例(True Negative,TN):真实类别为负例,预测类别为负例。

然后可以构建混淆矩阵(Confusion Matrix)如下表所示。

真实类别 预测类别 预测类别
正例 负例
正例 TP FN
负例 FP TN

准确率,又称查准率(Precision,P):
P=TP/(TP+FP)P=TP/(TP+FP) P=TP/(TP+FP)

1、sklearn.metrics.precision_score()方法

方法说明:

sklearn.metrics.precision_score(y_true, y_pred, *, labels=None, pos_label=1,average='binary', sample_weight=None,zero_division="warn"):

参数介绍:

  • y_true:真实的标签,即数据集中真实的分类标签情况,是一个1维的数组

  • y_pred:预测标签,即模型预测的分类标签情况,是一个1维的数组

  • labels:可选参数,默认为None ,是一个一维的数组, 二分类时,不需要用这个参数。

  • pos_label:字符串或者int类型,默认值是1,如果average='binary且数据是二分类,则需要报告的类,如果数据是多类或多标签的,这将被忽略;设置labels=[pos_label]average != 'binary将只报告该标签的分数。

  • average:字符串类型,取值为 [None, ‘binary’ (default), ‘micro’, ‘macro’, ‘samples’, ‘weighted’]。默认为binary,给出正样本的准确率,也就是pos_label默认参数1时的准确率。

  • sample_weight:数组类型,样本的权重

  • zero_division:取值为 [“warn”, ‘0’ , ‘1’] ,设置存在零除法时返回的值,warn也相等于是0,但是会出现警告

2、sklearn.metrics.precision_score()的使用举例(二分类)

在二分类问题上,使用这个非常简单,因为方法中很多参数都是针对 二分类 默认的参数,不需要额外指定

例如:pos_label 默认为1呀(二分类正样本的值),average为 二分类 binary

只需要 传入预测的真实的 标签,即可求出准确率

from sklearn.metrics import precision_scorepred = [0, 1, 0, 1] # 预测的值
target = [0, 1, 1, 0] # 真实的值precision = precision_score(pred, target)print(precision)===> 0.5

如果不是 0 1 的值,是其他二分类的值,那么就可以通过 labelspos_label 来指定

labels = [3,4]  # 二分类 两个类别的值pred = [3, 4, 3, 4] # 预测的值target = [3, 4, 4, 3] # 真实的值precision = precision_score(pred, target , labels = labels , pos_label= 3) # pos_label指定正样本的值是多少print(precision)===> 0.5

2、sklearn.metrics.precision_score() 的使用举例(多分类)

针对多分类问题,各个参数的传参:

  • labels :需要是传入 多分类的 类别数组
  • pos_label:该值会被忽略
  • average:取值 ‘micro’, ‘macro’, ‘samples’, ‘weighted’
  • sample_weight:权重

举例:

labels = [1, 2, 3, 4] # 有哪几类pred = [1, 2, 3, 4, 2, 3, 4, 1] # 预测的值target = [2, 3, 1, 4, 1, 4, 4, 1] # 真实的值precision = precision_score(pred, target, labels=labels, average="micro") # average 指定为micro
print(precision)precision = precision_score(pred, target, labels=labels, average="macro") # average 指定为macro
print(precision)precision = precision_score(pred, target, labels=labels, average="weighted") # average 指定为weighted
print(precision)===>0.375
===>0.25
===>0.25

这里主要的是 average 的不同,计算结果会有不同

  • macro:是先对每一个类统计指标值,然后在对所有类求算术平均值。
  • micro:是对数据集中的每一个实例不分类别进行统计建立全局混淆矩阵,然后计算相应指标
  • weightes:计算每个标签的指标,并找到它们的平均加权支持度
  • samples:计算每个实例的指标,并找到它们的平均值

比较常用的是 macromicro 这两种取值

1)macro 是先对每一个类统计指标值,然后利用下面的公式对所有类求算术平均值,
MacroP=(1/n)(P1+P2+P3+....+Pn)MacroP=(1/n)(P1+P2+P3+....+Pn) MacroP=(1/n)(P1+P2+P3+....+Pn)
2)micro 是对数据集中的每一个实例不分类别进行统计建立全局混淆矩阵,然后计算相应指标
MicroP=(TP1+TP2+TP3+....TPn)/((TP1+TP2+TP3+....TPn)+(FP1+FP2+FP3+....FPn))MicroP=(TP1+TP2+TP3+....TPn)/((TP1+TP2+TP3+....TPn)+(FP1+FP2+FP3+....FPn)) MicroP=(TP1+TP2+TP3+....TPn)/((TP1+TP2+TP3+....TPn)+(FP1+FP2+FP3+....FPn))
根据不同的值,计算不同的 precision

python - sklearn 计算精准率(Precision)相关推荐

  1. python - sklearn 计算F1

    python - sklearn 计算F1 因为最近写的分类模型需要性能评价 ,常用的分类性能评价有 查准率.召回率.准确率.F1 分类问题的常用的包 sklearn ,下面对F1所用的方法进行介绍 ...

  2. python - sklearn 计算准确率

    python - sklearn 计算准确率 因为最近写的分类模型需要性能评价 ,常用的分类性能评价有 准确率.查准率.召回率.F1 分类问题的常用的包 sklearn ,下面对准确率所用的方法进行介 ...

  3. [Python+sklearn] 计算混淆矩阵 confusion_matrix()函数

    python sklearn 计算混淆矩阵 confusion_matrix()函数 参考sklearn官方文档:sklearn.metrics.confusion_matrix. 功能: 计算混淆矩 ...

  4. [白话解析] 通过实例来梳理概念 :准确率 (Accuracy)、精准率(Precision)、召回率(Recall) 和 F值(F-Measure)

    [白话解析] 通过实例来梳理概念 :准确率 (Accuracy).精准率(Precision).召回率(Recall)和F值(F-Measure) 文章目录 [白话解析] 通过实例来梳理概念 :准确率 ...

  5. 【教学】图像分类算法中的召回率recall、精准率precision和f1score得分等计算。

    首先我们来介绍一下这些名称的含义. TP: 预测为1(Positive),实际也为1(Truth-预测对了) TN: 预测为0(Negative),实际也为0(Truth-预测对了) FP: 预测为1 ...

  6. R包rdist、Python sklearn计算pairwise distance

    R包rdist计算pairwise distance 最近想要计算pairwise distance,使用嵌套循环可以解决,但是当矩阵太大的时,就计算慢很多(0.5h到几天的差别). 1. rdist ...

  7. python- sklearn 计算召回率(Recall)

    python - sklearn 计算召回率 因为最近写的分类模型需要性能评价 ,常用的分类性能评价有 查准率.召回率.准确率.F1 分类问题的常用的包 sklearn ,下面对召回率所用的方法进行介 ...

  8. Precision(精准率、查准率)和Recall(召回率、查全率)的应用场景

    概念 Precision(查准率):找的准,你认为的该类样本,有多少猜对了(猜的精准性如何) Recall(查全率):找的全,该类样本有多少被找出来了(召回了多少) 一.精准率Precision的应用 ...

  9. [机器学习] 二分类模型评估指标---精确率Precision、召回率Recall、ROC|AUC

    一 为什么要评估模型? 一句话,想找到最有效的模型.模型的应用是循环迭代的过程,只有通过持续调整和调优才能适应在线数据和业务目标. 选定模型时一开始都是假设数据的分布是一定的,然而数据的分布会随着时间 ...

最新文章

  1. 移动硬盘不能识别,设备管理器中显示黄色感叹号
  2. 《Red Hat Linux命令速查》—— 带你玩转字符游戏
  3. 《剑指offer》c++版本 12. 矩阵中的路径
  4. 原:开辟内存时,可以以结构体为单位,这样测试,是对的吧?
  5. java 文件 递归_JAVA实现遍历文件夹下的所有文件(递归调用和非递归调用)
  6. (转)腾讯2011.10.15校园招聘会笔试题
  7. css技能你get到了吗?
  8. 信息学奥赛一本通(1083:计算星期几)
  9. 经验 | 计算机视觉顶会上的灌水文都有哪些特征?
  10. elasticsearch中集群选举中的ping源码解析
  11. 最全PR曲线、ROC曲线以及AUC计算公式详解
  12. 转录组-蛋白组-代谢组关联分析
  13. 使用TypeScript重构Axios:让你的项目更加完善
  14. 神棍节献礼之——URAL1111 Squares(几何)
  15. VSS2005的配置
  16. VF200(VF101-N)产品重庆平台操作指导书_v2.1.24_20201020
  17. 对企业信息化建设的研究
  18. Tableau培训学习笔记3:空间数据分析——科比投篮以及新冠肺炎分析(带数据)
  19. PHP解说日全食红月
  20. 【稀饭】react native 实战系列教程之自定义原生模块

热门文章

  1. 微信公众号开发通用任务清单
  2. HTML和CSS代码规范
  3. 魅力月全食,怎么看才过瘾?
  4. Effective C++知识点
  5. <CSS3练习> CSS动画综合案例 热点图(含素材)
  6. Visual Studio 2015 的安装和使用
  7. 基于Maix IDE的编程环境 K21O人脸识别+串口输出
  8. 可以设置过期时间的Java缓存Map
  9. 笔记本 android,震惊:这个秘籍可以让笔记本同时拥有(mac/win/Android)系统
  10. 真正的高手,都有对抗“熵增”的底层思维