欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Python】绘制PR曲线

程序员文章站 2022-05-26 19:15:16
...

数据挖掘模型训练好了之后,对于二分类问题,可以预测每个测试样本属于某个类别的概率,
当我们设置不同阈值时,将得到不同的P值(Precision,查准率)和R值(Recall,查全率)
基于此,可以绘制PR曲线,python绘制PR曲线比较方便。
首先,可以使用precision_recall_curve函数得到

#选择测试数据
import pandas as pd

df = pd.read_csv('file_name.csv')
X = df[df.columns[:-1]]
y = df[df.columns[-1]]

#训练——测试数据集划分
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X[y < 2], y[y < 2],test_size=.5,random_state=1)

#构造模型
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X_train, y_train)
#model.predict_proba将返回属于各个类别的概率,每行概率和为1
y_prob = model.predict_proba(X_test)[:,1]

#计算P值和R值:precision_recall_curve函数返回值分别为查准率precision,查全率recall,以及对应的阈值thresholds

precision, recall, thresholds = sklearn.metrics.precision_recall_curve(y_test, y_prob, pos_label=None, sample_weight=None)

#然后根据precision, recall绘制PR曲线

plt.plot()

其次可以直接使用plot_precision_recall_curve函数绘制PR曲线

from sklearn.metrics import plot_precision_recall_curve
disp = plot_precision_recall_curve(classifier, X_test, y_test)
disp.ax_.set_title('2-class Precision-Recall curve')