# Precision-Recall 曲線
Precision-Recall可以用于分類任務的評估。
當樣本非常不平衡時,Precision-Recal是一個很好的模型度量標準。
# 精確度 與召回率
精確度:Precision(P)
召回率:Recall (R)
Precision-Recall 曲線展示了不同閾值的精度和召回之間的權(quán)衡。曲線下的面積大時表示高召回和高精度,其中高精度與低假陽性率相關(guān),高召回與低假陰性率相關(guān)。兩者打分都高表明分類器正在返回準確的結(jié)果(高精度),以及返回所有陽性結(jié)果的大部分(高召回率)。
# 平均精度
平均精度:Average precision (AP)
平均精度曲線圖:在每個閾值處實現(xiàn)的精度的加權(quán)平均值,兩個閾值之間召回率的增加作為權(quán)重:
# 數(shù)據(jù)準備
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