【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')