美文网首页
python 使用sklearn 绘制Precision-Rec

python 使用sklearn 绘制Precision-Rec

作者: JeremyL | 来源:发表于2023-01-09 18:55 被阅读0次

# Precision-Recall 曲线

P = \frac{T_p}{T_p+F_p}
Precision-Recall可以用于分类任务的评估。
当样本非常不平衡时,Precision-Recal是一个很好的模型度量标准。

# 精确度 与召回率

精确度:Precision(P)
P = \frac{T_p}{T_p+F_p}
召回率:Recall (R)
R = \frac{T_p}{T_p + F_n}

Precision-Recall 曲线展示了不同阈值的精度和召回之间的权衡。曲线下的面积大时表示高召回和高精度,其中高精度与低假阳性率相关,高召回与低假阴性率相关。两者打分都高表明分类器正在返回准确的结果(高精度),以及返回所有阳性结果的大部分(高召回率)。

# 平均精度

平均精度:Average precision (AP)
平均精度曲线图:在每个阈值处实现的精度的加权平均值,两个阈值之间召回率的增加作为权重:
\text{AP} = \sum_n (R_n - R_{n-1}) P_n

# 数据准备

import numpy as np
from sklearn import metrics

pred = np.concatenate((np.random.normal(5, 2, 30), np.random.normal(7, 2, 30)))
y = np.concatenate((np.full(30, 0), np.full(30, 1)))

# Precision-Recall曲线

from sklearn.metrics import precision_recall_curve
from sklearn.metrics import PrecisionRecallDisplay

prec, recall, _ = precision_recall_curve(y, pred, pos_label=1)
pr_display = PrecisionRecallDisplay(precision=prec, recall=recall, average_precision=average_precision_score(y, pred, pos_label=1)).plot()
pr_display.average_precision
# 0.8583697467770215
image.png
PrecisionRecallDisplay.from_predictions(y_true=y, y_pred=pred)
image.png

# 计算平均精确度:Average precision (AP)

from sklearn.metrics import average_precision_score
average_precision_score(y, pred, pos_label=1)
# 0.8583697467770215

#原文:

Precision-Recall

相关文章

网友评论

      本文标题:python 使用sklearn 绘制Precision-Rec

      本文链接:https://www.haomeiwen.com/subject/hrvucdtx.html