Python如何画P-R曲线
Python生成P-R图需要安装第三方库
matplotlib
、
numpy
及
sklearn
。
推荐学习《
》。
P-R曲线的生成方法:
根据学习器的预测结果对样本进行排序。第一个是学习者认为最有可能是正例的样本,最后一个是最不可能是正例的样本。按照这个顺序,样本被一个一个地预测为正例。然后每次可以计算当前的查全率和查准率,将查全率画在横轴,查准率在纵轴,得到的查准率曲线就是P-R曲线。
即预测每个样本为正例的概率,然后根据预测概率对所有样本进行排序,再将排序后的样本依次预测为正例,从而得到每次预测的召回率和准确率。将样本依次作为正例的过程,实际上是在逐步降低样本为正例的概率阈值。通过降低阈值,更多的样本将被预测为正例,这将提高召回率。相对准确率可能会下降,随着后期负样本的增加,召回率缓慢增加甚至不增加,准确率下降较快。
sklearn的计算过程与定义相反,按照概率从小到大递增的顺序计算precision和recall,对precision和recall分别加1和0。
#coding:utf-8
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import precision_recall_curve
from sklearn.utils.fixes import signature
plt.figure("P-R Curve")
plt.title('Precision/Recall Curve')
plt.xlabel('Recall')
plt.ylabel('Precision')
#y_true为样本实际的类别,y_scores为样本为正例的概率
y_true = np.array([1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0])
y_scores = np.array([0.9, 0.75, 0.86, 0.47, 0.55, 0.56, 0.74, 0.62, 0.5, 0.86, 0.8, 0.47, 0.44, 0.67, 0.43, 0.4, 0.52, 0.4, 0.35, 0.1])
precision, recall, thresholds = precision_recall_curve(y_true, y_scores)
#print(precision)
#print(recall)
#print(thresholds)
plt.plot(recall,precision)
plt.show()
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python实现多线程有多少种方式?12/02
- ♥ python中的匿名函数是什么?09/22
- ♥ 如何使用python字典添加数据?12/09
- ♥ 如何安装 python 轮子图像10/15
- ♥ python字符串的驻留机制是什么09/30
- ♥ python如何打包成应用程序?08/30
内容反馈