如果您查看sklearn help page on precision-recall,它会写道:
precision-recall 曲线显示了精度和
召回不同的阈值。曲线下的高面积代表
高召回率和高精度,其中高精度与
低误报率,高召回率与低误报率有关
负利率
通常,当您只使用真实标签和预测标签时,您是在以 0.5 的阈值评估精度或其他指标,并从那里计算精度。
例如,如果我们将阈值提高到 0.6,即 p>0.6 将是正类而其他为负类,我们预计会减少误报,但我们也会损失一些。
您使用 predict_proba 方法来获取概率。对于 2 类分类,第二列是您需要的正类的概率:
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
import matplotlib.pyplot as plt
from sklearn.metrics import precision_recall_curve
dat = datasets.load_breast_cancer()
X = dat.data
y = dat.target
X_train, X_test, y_train, y_test = train_test_split(X, y,train_size=0.5)
clf = SVC(probability=True)
clf.fit(X_train, y_train)
y_score = clf.predict_proba(X_test)[:,1]
precision, recall, _ = precision_recall_curve(y_test,y_score)
plt.step(recall, precision, where='post')
plt.ylim([0.0, 1.05])
plt.xlim([0.0, 1.0])