python画PR曲线(precision-recall曲线)

使用python画precision-recall曲线的代码是:

sklearn.metrics.precision_recall_curve(y_true, probas_pred, pos_label=None, sample_weight=None)

以上代码会根据预测值和真实值,并通过改变判定阈值来计算一条precision-recall典线。

注意:以上命令只限制于二分类任务

precision(精度)为tp / (tp + fp),其中tp为真阳性数,fp为假阳性数。

recall(召回率)是tp / (tp + fn),其中tp是真阳性数,fn是假阴性数。

参数:

  • y_true:array, shape = [n_samples]:真实标签。如果标签不是{-1,1}或{0,1},那么pos_label应该显式给出。
  • probas_pred:array, shape = [n_samples] :正类的预测概率或决策函数
  • pos_label:int or str, default=None:正类标签。当pos_label=None时,如果y_true为{- 1,1}或{0,1},则pos_label设置为1,否则将报错。

返回值:

  • precision:array, shape = [n_thresholds + 1]:精度,最后一个元素是1。
  • recall:array, shape = [n_thresholds + 1]:召回率,最后一个是0
  • thresholds:array, shape = [n_thresholds <= len(np.unique(probas_pred))]:用于计算精度和召回率的决策函数的阈值

例子:

import numpy as np
from sklearn.metrics import precision_recall_curve
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
precision, recall, thresholds = precision_recall_curve(y_true, y_scores)
>>> precision
array([0.66666667, 0.5, 1., 1.])
>>> recall
array([1., 0.5, 0.5, 0.])
>>> thresholds
array([0.35, 0.4, 0.8])

sklearn.metrics.average_precision_score则计算预测值的平均准确率(AP: average precision)。该分数对应于presicion-recall曲线下的面积。该值在0和1之间,而且更高更好。 

sklearn.metrics.average_precision_score(y_true, y_score, average='macro', pos_label=1, sample_weight=None)

参数:

y_true:array, shape = [n_samples] or [n_samples, n_classes]

二元真实标签或二元标签指示器

y_score:array, shape = [n_samples] or [n_samples, n_classes]

目标分数,可以是正类的预测概率,置信度,或者无阈值决策

average:string, [None, ‘micro’, ‘macro’ (default), ‘samples’, ‘weighted’]

pos_label:int or str (default=1)

返回值:

average_precision:float

举例:

import numpy as np
from sklearn.metrics import average_precision_score
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
average_precision_score(y_true, y_scores)
# 0.83...

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV学习笔记(十一):阈值化:threshold(),adaptivethreshold()

OpenCV学习笔记&#xff08;十一&#xff09;&#xff1a;阈值化&#xff1a;threshold(),adaptivethreshold() 一、定义&#xff1a; 1&#xff09;固定阈值操作 double threshold( InputArray src, // 输入图像&#xff0c;单通道 OutputArray dst, // 输出图像 double…

北京邮电大学刘伟教授:人机融合与混合智能的新应用场景

前言&#xff1a;本文是北京邮电大学人机交互与认知工程实验室主任、科技委人机融合智能组首席科学家刘伟教授就混合智能的产生、起源和新应用场景所做的深度阐述。第一部分是刘伟老师从新书《崛起的超级智能&#xff1a;互联网大脑如何影响科技未来》延伸的关于人机融合的思考…

VC++6.0怎么打开工程

点击文件→打开&#xff0c;选择工程所在文件夹&#xff0c;选择后缀名为dsp的文件打开即可。 若直接选择cpp后缀名打开&#xff0c;打开的只是cpp文件&#xff0c;而不是工程&#xff0c;此时VC右侧不会显示工程信息。

问题解决:QtCreator屏蔽指定警告:如C4819等

QT creator 频繁报出 &#xff0c;不好解决的错误如&#xff1a; warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 方法一&#xff1a;&#xff08;屏蔽此警告&#xff09; 在工程文件.pro里面添加 # disable C…

解析|2G~5G与未来天线技术!

来源&#xff1a;电子万花筒过去二十年&#xff0c;我们见证了移动通信从1G到4G LTE的转变。在这期间&#xff0c;通信的关键技术在发生变化&#xff0c;处理的信息量成倍增长。而天线&#xff0c;是实现这一跨越式提升不可或缺的组件。按照业界的定义&#xff0c;天线是一种变…

DB2 错误代码 命令大全

SQLSTATE 消息 本节列示 SQLSTATE 及其含义。SQLSTATE 是按类代码进行分组的&#xff1b;对于子代码&#xff0c;请参阅相应的表。 表 2. SQLSTATE 类代码 类 代码 含义 要获得子代码&#xff0c; 参阅... 00 完全成功完成 表 3 01 警告 表 4 02 无数据 表 5 07 动态 …

C++查看各种数据类型所占字节和最大最小值(数据范围)

#include<iostream> using namespace std; int main() { cout << "bool: \t\t" << "所占字节数&#xff1a;" << sizeof(bool); cout << "\t最大值&#xff1a;" << (numeric_limits<bool>::ma…

QT+OpenCV综合示例:图像混合(滑动条)

QTOpenCV综合示例&#xff1a;图像混合&#xff08;滑动条&#xff09;1、代码&#xff1a;2、运行结果&#xff1a;0&#xff09;Widget_op.ui &#xff08;界面文件&#xff09;设计&#xff1a; 1、代码&#xff1a; 1&#xff09;opencv_imwrite_Q.pro 添加&#xff1a;…

软件或jar包等名字里的GA意思

首页 > 转贴的文章 > 软件的版本"GA"代表什么意思?如MyEclipse 5.0 GA 软件的版本"GA"代表什么意思?如MyEclipse 5.0 GA 经常看到软件版本里有GA的&#xff0c;如MyEclipse 5.0 GA&#xff0c;iBATIS for Java 2.2.0 Released [Status: Beta - Vot…

图说报告|智能技术群的“核聚变”推动智能+时代到来

来源&#xff1a;阿里研究院2019年政府工作报告正式提出了“智能”重要战略。5G、物联网、人工智能、数字孪生、云计算、边缘计算等智能技术群的融合与叠加就像“核聚变”&#xff0c;推动着万物互联迈向万物智能时代&#xff0c;进而带动了“智能”时代的到来&#xff0c;以智…

C++局部变量和全局变量的初始化

当局部变量被定义时&#xff0c;系统不会对其初始化&#xff0c;此时局部变量的初始值未定义&#xff0c;必须自行对其初始化。定义全局变量时&#xff0c;系统会自动初始化为下列值&#xff1a;

OpenCV学习笔记(十二):边缘检测:Canny(),Sobel(),Laplace(),Scharr滤波器

OpenCV学习笔记&#xff08;十二&#xff09;&#xff1a;边缘检测&#xff1a;Canny(),Sobel(),Laplace(),Scharr滤波器 1&#xff09;滤波&#xff1a;边缘检测的算法主要是基于图像强度的一阶和二阶导数&#xff0c;但导数通常对噪声很敏感&#xff0c;因此必须采用滤波器来…

C++全局变量和局部变量名称可以相同

C的局部变量和全局变量的名称可以相同&#xff0c;但是在函数内&#xff0c;局部变量的值会覆盖全局变量的值。下面是一个实例&#xff1a; #include <iostream> using namespace std;// 全局变量声明 int g 20;int main () {// 局部变量声明int g 10;cout << g…

微软转型里程碑:云计算收入首次超过Windows业务

来源&#xff1a;腾讯科技导语 微软云计算业务第二季度收入为114亿美元&#xff0c;实现了64%的营收增长&#xff0c;上年同期和上一季度的增幅分别为89%和73%。腾讯科技讯 据国外媒体报道&#xff0c;微软公司今日公布了二季度财报&#xff08;自然季度&#xff0c;下同&#…

day⑥:面向对象

一.类初识-cs_game12345678910111213141516171819202122232425262728293031323334353637383940#!/usr/bin/env python#codingutf-8class Role(object): #新式类的写法acNonedef __init__(self,name,role,weapon,life_value100,money15000):self.namenameself.roleroleself.weap…

OpenCV学习笔记(十三):霍夫变换:HoughLines(),HoughLinesP(),HoughCircles( )

OpenCV学习笔记&#xff08;十三&#xff09;&#xff1a;霍夫变换&#xff1a;HoughLines(),HoughLinesP(),HoughCircles( ) 1、霍夫线变换HoughLines() OpenCV支持三种不同的霍夫线变换&#xff0c;它们分别是&#xff1a; 1&#xff09;标准霍夫变换(Standard Hough Trans…

“如果没有IBM和其所提供的系统,我们就无法登上月球。”

来源&#xff1a;IBM中国“如果没有IBM和其所提供的系统&#xff0c;我们就无法登上月球。”——NASA飞行指挥官 Gena Kra1969年7月20日&#xff0c;就在距离阿姆斯特朗迈出“人类一大步”约122米的月球上空&#xff0c;登月舱里突然响起了刺耳的警报声。警报向NASA显示机载电脑…

C++有符号和无符号数的转换

本文转自&#xff1a;http://www.94cto.com/index/Article/content/id/59973.html 1.引例&#xff1a; 今天在做了一道关于有符号数和无符号数相互转换及其左移/右移的问题&#xff0c;被它们之间的转换原理和位移原理搞得头大了。真的很后悔本科的时候没有认真学习《计算机组成…

OpenCV学习笔记(十四):重映射:remap( )

OpenCV学习笔记&#xff08;十四&#xff09;&#xff1a;重映射&#xff1a;remap( ) 图像的坐标映射是通过原图像与目标图像之间建立一种映射关系&#xff0c;这种映射关系有两种&#xff0c;一种是计算原图像任意像素在映射后图像的坐标位置&#xff0c;另一种是计算变换后…