【问题标题】:Precision recall [closed]精确召回[关闭]
【发布时间】:2021-10-23 08:17:36
【问题描述】:

谁能告诉我closest_zero、closest_zero_p和closest_zero_r是什么意思?

from sklearn.metrics import precision_recall_curve
precision, recall, thresholds = precision_recall_curve(y_test, y_scores_lr)
closest_zero = np.argmin(np.abs(thresholds))
closest_zero_p = precision[closest_zero]
closest_zero_r = recall[closest_zero]

plt.figure()
plt.xlim([0.0, 1.01])
plt.ylim([0.0, 1.01])
plt.plot(precision, recall, label='Precision-Recall Curve')
plt.plot(closest_zero_p, closest_zero_r, 'o', markersize = 12, fillstyle = 'none', c='r', mew=3)
plt.xlabel('Precision', fontsize=16)
plt.ylabel('Recall', fontsize=16)
plt.axes().set_aspect('equal')
plt.show()

【问题讨论】:

    标签: python numpy machine-learning data-science precision-recall


    【解决方案1】:

    首先我们有y_test,这是基本事实,应该是二进制类型 - 两个类(通常是 0 和 1)。此外,我们还有y_scores_lr,它是连续的预测值。 precision_recall_curve 是一个计算值以绘制召回-精度曲线的函数,其输出为: precision - x 轴的值。 recall - y 轴的值。 thresholds - 用于实现相应精度和召回值的阈值。为了详细说明这些值的含义,每个阈值用于产生不同的分类结果,其中来自y_scores_lr 的所有低于该值的预测被分配到一个类,而所有其他值(高于阈值)被认为是另一个班级。将预测值按特定阈值分类后,根据分类结果计算准确率和召回率。

    重要的是,现在可以使用精确召回曲线找到执行未来分类的最佳阈值,或者至少更好地了解模型的行为。

    代码查找一个特定的阈值,即最接近零的阈值(无论是正值还是负值),并将相应的精度和召回值设为该阈值,以便将其绘制为绘制曲线上的一个点.

    所以,closest_zero 是最高负阈值或最低正阈值的索引,取决于哪个更接近于零。 (np.argmin 返回值最低的索引,abs 确保只考虑与零的差异,而不考虑符号)

    因此,closest_zero_pclosest_zero_r 是最接近于零的阈值的同一索引处的精度和召回率。

    【讨论】:

      猜你喜欢
      • 2018-03-20
      • 2021-09-13
      • 2017-09-21
      • 2017-04-13
      • 2011-11-02
      • 2015-08-11
      • 1970-01-01
      • 2020-04-18
      • 2018-10-29
      相关资源
      最近更新 更多