python画PR曲线(precision-recall曲线)
使用python畫precision-recall曲線的代碼是:
sklearn.metrics.precision_recall_curve(y_true, probas_pred, pos_label=None, sample_weight=None)以上代碼會根據預測值和真實值,并通過改變判定閾值來計算一條precision-recall典線。
注意:以上命令只限制于二分類任務
precision(精度)為tp / (tp + fp),其中tp為真陽性數,fp為假陽性數。
recall(召回率)是tp / (tp + fn),其中tp是真陽性數,fn是假陰性數。
參數:
- y_true:array, shape = [n_samples]:真實標簽。如果標簽不是{-1,1}或{0,1},那么pos_label應該顯式給出。
- probas_pred:array, shape = [n_samples] :正類的預測概率或決策函數
- pos_label:int or str, default=None:正類標簽。當pos_label=None時,如果y_true為{- 1,1}或{0,1},則pos_label設置為1,否則將報錯。
返回值:
- precision:array, shape = [n_thresholds + 1]:精度,最后一個元素是1。
- recall:array, shape = [n_thresholds + 1]:召回率,最后一個是0
- thresholds:array, shape = [n_thresholds <= len(np.unique(probas_pred))]:用于計算精度和召回率的決策函數的閾值
例子:
import numpy as np from sklearn.metrics import precision_recall_curve y_true = np.array([0, 0, 1, 1]) y_scores = np.array([0.1, 0.4, 0.35, 0.8]) precision, recall, thresholds = precision_recall_curve(y_true, y_scores) >>> precision array([0.66666667, 0.5, 1., 1.]) >>> recall array([1., 0.5, 0.5, 0.]) >>> thresholds array([0.35, 0.4, 0.8])sklearn.metrics.average_precision_score則計算預測值的平均準確率(AP: average precision)。該分數對應于presicion-recall曲線下的面積。該值在0和1之間,而且更高更好。?
sklearn.metrics.average_precision_score(y_true, y_score, average='macro', pos_label=1, sample_weight=None)參數:
y_true:array, shape = [n_samples] or [n_samples, n_classes]
二元真實標簽或二元標簽指示器
y_score:array, shape = [n_samples] or [n_samples, n_classes]
目標分數,可以是正類的預測概率,置信度,或者無閾值決策
average:string, [None, ‘micro’, ‘macro’ (default), ‘samples’, ‘weighted’]
pos_label:int or str (default=1)
返回值:
average_precision:float
舉例:
import numpy as np from sklearn.metrics import average_precision_score y_true = np.array([0, 0, 1, 1]) y_scores = np.array([0.1, 0.4, 0.35, 0.8]) average_precision_score(y_true, y_scores) # 0.83...?
總結
以上是生活随笔為你收集整理的python画PR曲线(precision-recall曲线)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: halconC++类:HDevWindo
- 下一篇: Halcon算子学习:图像阈值分割-th