1. 程式人生 > >分類精度評價:混淆矩陣+總體精度OA、F1值等

分類精度評價:混淆矩陣+總體精度OA、F1值等

整理 歸納 舉例 記錄一下

(一)混淆矩陣

混淆矩陣也稱誤差矩陣,是表示精度評價的一種標準格式,用n行n列的矩陣形式來表示。

Predicted as Positive(預測-正例) Predicted as Negative(預測-反例)
Labeled as Positive (真實-正例) True Positive(TP-真正例) False Negative(FN-假反例)
Labeled as Negative (真實-反例) False Positive(FP-假正例) True Negative(TN-真反例)

TP:真正,被模型分類正確的正樣本 【預測為1 實際為1】 

FN:假負,被模型分類錯誤的正樣本 【預測為0 實際為1】

FP:假正,被模型分類錯誤的負樣本 【預測為1 實際為0】

TN:真負,被模型分類正確的負樣本 【預測為0 實際為0】

計算評價指標

Precision查準率、精確率:分類正確的正樣本個數佔分類器分成的所有正樣本個數的比例

            P = \frac{TP}{TP + FP}

Recall查全率、召回率:分類正確的正樣本個數佔正樣本個數的比例

          R = \frac{TP}{TP +FN}

F1值

          F1度量的一般形式是:F_{\beta }=\frac{(1+\beta ^{2})\times P\times R}{(\beta ^{2}\times P)+R}

               \beta >0 度量了查全率對查準率的相對重要性

              \beta =1 時退化為標準的F1

              \beta >1

 時查全率有更大影響

             \beta <1 時查準率有更大影響

       F1是基於查全率和查準率的調和平均定義的如下:

           \frac{1}{F1}=\frac{1}{2}\cdot (\frac{1}{P}+\frac{1}{R})       or    F1 =2 \cdot \frac{P\cdot R}{P+R}

TPR:真正例率

          TPR=\frac{TP}{TP+FN}

FPR:假正例率

          FPR=\frac{FP}{TN+FP}

ROC曲線

        根據學習器的預測結果對樣例進行排序,按此順序逐個把正例進行預測,每次計算出真正例率、假正例率,並以真正例率為縱軸,假正例率為橫軸,即得到ROC曲線

總體分類精度(Overall Accuracy):分類正確的樣本個數佔所有樣本個數的比例        

           OA = \frac{TP + TN}{TP+ FN + FP +TN}        或    OA = \frac{1}{N}\Sigma _{i=1}^{r}x_{ii}

Kappa係數

        Kappa = \frac{N \Sigma_{i=1}^{r}x_{ii}-\Sigma _{i=1}^{r}(x_{i+}\times x_{+i})}{N^{2}-\Sigma _{i=1}^{r}(x_{i+}\times x_{+i})}

- - - - - - - - - - - - - - - - - - - - - - -- - - -- - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 (二) 例:  單位/畫素(pixel)

class 水體 林地 耕地 未利用地 居民地 總計
水體 25792 0 0 2 44 25838
林地 80 16825 297 684 1324 19210
耕地 519 60 27424 38 11542 39583
未利用地 31 0 0 9638 487 10156
居民地 323 0 49 133 30551 31056
總計 26745 16885 27770 10495 43948 125843
林地 Predicted as Positive Predicted as Negative
Labeled as Positive  16825(TP) 2385(FN)
Labeled as Negative  60(FP) 93405(TN)

林地-精確率P:

P = (16825)/(16825+60)= 0.9964

林地-召回率R:

R = (16825)/(16825+2385)= 0.8758

林地-F1值:

F1 = 2\cdot \frac{0.9964\cdot 0.8758}{0.9964+0.8758}=0.9322

總體精度: 正確分類的像元總和除以總像元數。被正確分類的像元數目沿著混淆矩陣的對角線(紅色字型)分佈,總像元數等於所有真實參考源的像元總數 (藍色字型)    

OA = (110230/125843)=87.5933%

Kappa係數:通過把所有真實參考的像元總數(N)乘以混淆矩陣對角線(Xii)的和,再減去各類中真實參考像元數與該類中被分類像元總數之積之後,再除以像元總數的平方減去各類中真實參考像元總數與該類中被分類像元總數之積對所有類別求和的結果。

K = 0.8396

- - - - - - - - - - - - - - - - - - - - - - -- - - -- - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

(三)Python求混淆矩陣

匯入庫:

from sklearn import metrics
from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report

類似例子程式碼見:

計算一幅影象中不同地物的分類精確度(以畫素為單位)

計算分類結果圖與標準參考圖混淆矩陣

對分類結果進行P值、R值、F1值等的評價

參考:

- - - - - - - - - - - - - - - - - - - - - - -- - - -- - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

分享,多擔待。望有幫助