machine-learning - 估计器结果已知时的精确召回曲线
问题描述
我有一个在 上运行的估计器的结果X
,以及基本事实,我想使用plot_precision_recall_curve
,但这需要传入estimator
和X
- 我不能这样做,估计器非常复杂并且驻留在另一个系统中.. 。 我该怎么办?(如果plot_precision_recall_curve
有一个版本会很好......)。y_pred
y_true
解决方案
您可以使用precision_recall_curve接受y_true
and y_pred
,并返回precision
,recall
和thresholds
, 以进一步用于查找f1_score和auc,后者可以让您手动绘制它。
这是一个例子:
# precision-recall curve and f1
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import precision_recall_curve
from sklearn.metrics import f1_score
from sklearn.metrics import auc
from matplotlib import pyplot
# generate 2 class dataset
X, y = make_classification(n_samples=1000, n_classes=2, random_state=1)
# split into train/test sets
trainX, testX, trainy, testy = train_test_split(X, y, test_size=0.5, random_state=2)
# fit a model
model = LogisticRegression(solver='lbfgs')
model.fit(trainX, trainy)
# predict probabilities
lr_probs = model.predict_proba(testX)
# keep probabilities for the positive outcome only
lr_probs = lr_probs[:, 1]
# predict class values
yhat = model.predict(testX)
lr_precision, lr_recall, _ = precision_recall_curve(testy, lr_probs)
lr_f1, lr_auc = f1_score(testy, yhat), auc(lr_recall, lr_precision)
# summarize scores
print('Logistic: f1=%.3f auc=%.3f' % (lr_f1, lr_auc))
# plot the precision-recall curves
no_skill = len(testy[testy==1]) / len(testy)
pyplot.plot([0, 1], [no_skill, no_skill], linestyle='--', label='No Skill')
pyplot.plot(lr_recall, lr_precision, marker='.', label='Logistic')
# axis labels
pyplot.xlabel('Recall')
pyplot.ylabel('Precision')
# show the legend
pyplot.legend()
# show the plot
pyplot.show()
推荐阅读
- swift - swift 5 data.withUnsafeBytes
- python - 尝试使用 matplotlib 为数据框列表制作子图时出现值错误?
- python - 员工退休年限如何计算
- python - 解析一个值是试图在一个切片的副本上设置错误
- java - 考虑在你的配置中定义一个 'com.example.conexion.repository.ClienteRepository' 类型的 bean
- python-3.x - 增加图像的宽度/高度(不调整大小)
- google-cloud-interconnect - GCP 合作伙伴互连配置
- python - 如何gzip查询结果-Python/Airflow
- node.js - 无论如何将我的 React Route 与 Node JS 重定向连接起来?
- java - mapstruct 有条件地创建和嵌套对象