一、前言
表征分類精度的指標有很多,其中最常用的就是利用混淆矩陣、總體分類精度以及Kappa系數。
其中混淆矩陣能夠很清楚的看到每個地物正確分類的個數以及被錯分的類別和個數。但是,混淆矩陣並不能一眼就看出類別分類精度的好壞,為此從混淆矩陣衍生出來各種分類精度指標,其中總體分類精度(OA)和卡帕系數(Kappa)應用最為廣泛。
總體分類精度(OA):指被正確分類的類別像元數與總的類別個數的比值;OA值雖然能很好的表征分類精度,但是對類別像元個數極度不平衡的多類地物來說,其值收到像元數據較多類別的影響較大,不能很好的表征每個類別地物。
Kappa系數(Kappa):Kappa系數是一種比例,代表着分類與完全隨機的分類產生錯誤減少的比例,其計算過程可用如下公式表示:
二、計算和代碼
以下部分代碼主要實現,如何獲得混淆矩陣,對於OA和Kappa系數則是很容易從混淆矩陣計算可得
1 int tolCount = 0; 2 for(int i = 0;i<row;i++) 3 { 4 float *oriPtr = oriClassMap.ptr<float>(0); 5 float *stdPtr = stdClassMap.ptr<float>(0); 6 for(int j = 0;j<col;j++) 7 { 8 int curStdIndex = int(stdPtr[j]); 9 if(curStdIndex == 0) 10 continue; 11 int curOriIndex = int(oriPtr[j]); 12 13 if(curStdIndex == curOriIndex) 14 conf.at<int>(curStdIndex-1,curStdIndex-1) = conf.at<int>(curStdIndex-1,curStdIndex-1)+1; 15 else 16 { 17 conf.at<int>(curStdIndex-1,curOriIndex-1) = conf.at<int>(curStdIndex-1,curOriIndex-1)+1; 18 } 19 tolCount++; 20 } 21 }
三、計算結果顯示