多条Precision-Recall(PR)曲线绘制(PR曲线)含python代码

对于一个二分类问题,我们可以根据模型的分类结果将其分为四类:TP、FP、TN、FN。
在这里插入图片描述
查准率和查全率是一对矛盾的度量,一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。例如,我们只要将所有样本都判断为正例,则查全率即为1,但是查准率却很低,反之亦然。
多条Precision-Recall(PR)曲线绘制(PR曲线)含python代码_第1张图片
单条PR曲线的绘制代码参考:参考

https://blog.csdn.net/u014568921/article/details/53843311?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link

#coding:utf-8
import matplotlib
#matplotlib.use("Agg")
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import precision_recall_curve
plt.figure(1) # 创建图表1
plt.title('Precision/Recall Curve')# give plot a title
plt.xlabel('Recall')# make axis labels
plt.ylabel('Precision')
 
#y_true和y_scores分别是gt label和predict score
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)
plt.figure(1)
plt.plot(precision, recall)
plt.show()
plt.savefig('p-r.png')

上面是单条PR曲线,在这里,我提取了多个模型的分类输出,如图:
多条Precision-Recall(PR)曲线绘制(PR曲线)含python代码_第2张图片
多条PR曲线:
部分代码

fig, ax = plt.subplots()
ax.plot(recall_1,precision_1,label='Model_1')
ax.plot(recall_2,precision_2,label='Model_2')
ax.plot(recall_3,precision_3,label='Model_3')
ax.plot(recall_4,precision_4,label='Model_4')
ax.plot(recall_5,precision_5,label='Model_5')
ax.plot(recall_6,precision_6,label='Model_6')
ax.set_xlabel('Recall')
ax.set_ylabel('Precision')
ax.set_title('Precision/Recall Curve')
ax.legend()
plt.show()

结果展示:
多条Precision-Recall(PR)曲线绘制(PR曲线)含python代码_第3张图片

你可能感兴趣的:(python,机器学习,分类)