Python下通過PR曲線值計算AP

2021-10-12 10:35:31 字數 1652 閱讀 7616

直接放**,從官方那邊摳出來的ap計算**,**內部分為voc2007之前的11點計算方法和voc2007之後的方法,目前都已經採用else:內的計算方法

import numpy as np

def voc_ap(rec, prec, use_07_metric=false):

""" ap = voc_ap(rec, prec, [use_07_metric])

compute voc ap given precision and recall.

if use_07_metric is true, uses the

voc 07 11 point method (default:false).

"""# 針對2023年voc,使用的11個點計算ap,現在不使用

if use_07_metric:

# 11 point metric

ap = 0.

for t in np.arange(0., 1.1, 0.1):

if np.sum(rec >= t) == 0:

p = 0

else:

p = np.max(prec[rec >= t])

ap = ap + p / 11.

else:

# correct ap calculation

mrec = np.concatenate(([0.], rec, [1.])) #[0. 0.0666, 0.1333, 0.4 , 0.4666, 1.]

mpre = np.concatenate(([0.], prec, [0.])) #[0. 1., 0.6666, 0.4285, 0.3043, 0.]

# compute the precision envelope

# 計算出precision的各個斷點(折線點)

for i in range(mpre.size - 1, 0, -1):

mpre[i - 1] = np.maximum(mpre[i - 1], mpre[i]) #[1. 1. 0.6666 0.4285 0.3043 0. ]

# to calculate area under pr curve, look for points

# where x axis (recall) changes value

i = np.where(mrec[1:] != mrec[:-1])[0] #precision前後兩個值不一樣的點

PR曲線與F值

pr曲線與roc曲線都是評價乙個機器學習演算法的標準,那麼不同點在 呢,首先我們還是看下面幾個值 tp 真正 實際正 fp 假正 實際負 tn 真負 實際負 fn 假負 實際正 與roc曲線不同的是,pr曲線用 precision 準確率和 recall 召回率分別作為橫縱座標。precision ...

PR曲線原理及通過曲線判斷分類器優劣

一 原理講解 p r曲線就是精確率precision vs 召回率recall 曲線,以recall作為橫座標軸,precision作為縱座標軸。首先解釋一下精確率和召回率。解釋精確率和召回率之前,先來看下混淆矩陣,負正 負tnfp正 fntp 把正例正確分類為正例,表示為tp true posit...

利用Python畫ROC曲線和AUC值計算

前言 roc receiver operating characteristic 曲線和auc常被用來評價乙個二值分類器 binary classifier 的優劣。這篇文章將先簡單的介紹roc和auc,而後用例項演示如何python作出roc曲線圖以及計算auc。auc介紹 auc area un...