分类模型评价指标
分類評價
- 準確率 平均準確率
- 準確率:
- 平均準確率:
- 例子
- 代碼
- 混淆矩陣
- 查準率 召回率 f1_score
- 分類報告
- ROC AUC
準確率 平均準確率
準確率:
對于驗證集,模型預測正確的樣本數(shù)/ 預測的總樣本數(shù)
accuracy=ncorrectntotalaccuracy = \frac {n_{correct}} {n_{total}}accuracy=ntotal?ncorrect??
缺點:
在訓練集,驗證集類別嚴重不平衡時,準確率無法全面評估模型
平均準確率:
對每個類別,計算準確率,然后所有類別準確率 求均值,作為模型的準確率
如:驗證集中0類有95個樣本,1類有5分樣本,模型預測的時候?qū)⑷繕颖绢A測為0,此時準確率0.95,但是對1類全部預測錯了,雖然準確率高,但是模型不好;而平均準確率為0.5,可以說明模型不好。
所以平均準確率,更能全面的評估模型
例子
y_test = [ 0,1,0,2,1,0]
y_pred = [0,2,0,1,2,0]
準確率:accuracy=36=0.5accuracy = \frac {3} {6} =0.5accuracy=63?=0.5
平均準確率:
acc0=1acc_0 = 1acc0?=1
acc1=0acc_1 = 0acc1?=0
acc2=0acc_2 = 0acc2?=0
meanacc=acc0+acc1+acc23=0.333mean_{acc} = \frac {acc_0+acc_1+acc_2} {3} =0.333meanacc?=3acc0?+acc1?+acc2??=0.333
代碼
#手動實現(xiàn)計算準確率 n_correct = (y_pred == y_test).sum() n_total = y_test.shape[0] acc = n_correct / n_total#sklearn 實現(xiàn) from sklearn.metrics import accuracy_score from sklearn.metrics import balanced_accuracy_score acc = accuracy_score(y_test,y_pred) mean_acc = balanced_accuracy_score(y_test,y_pred)混淆矩陣
更詳細的描述模型預測結(jié)果
2分類 --> 2x2矩陣
n分類 --> nxn矩陣
如下:2分類的混淆矩陣
真負率:TNTN+FP=88+1\frac {TN} {TN+FP} = \frac {8} {8+1}TN+FPTN?=8+18?
假正率:FPTN+FP=18+1\frac {FP} {TN+FP} = \frac {1} {8+1}TN+FPFP?=8+11?
假負率:FNFN+TP=22+10\frac {FN} {FN+TP} = \frac {2} {2+10}FN+TPFN?=2+102?
真正率:TPFN+TP=102+10\frac {TP} {FN+TP} =\frac {10} {2+10}FN+TPTP?=2+1010?
查準率 召回率 f1_score
查準率,召回率是一對矛盾的指標,一般同時使用
f1_score,是對兩者的融合
查準率precision_score:從預測的角度出發(fā),預測正確的樣本數(shù) / 預測為某一類的總數(shù),二分類中只計算正類,
多分類中計算預測的每一類的查準率,求均值作為模型的查準率
召回率recall_score:從真實的角度出發(fā),預測正確的樣本數(shù) / 某一類真實樣本數(shù),二分類只計算正類
多分類計算每一類的召回率,求均值作為模型的召回率
f1_score=2?precision?recallprecision+recallf1\_score = \frac {2 * precision * recall} {precision+recall}f1_score=precision+recall2?precision?recall?
#sklearn 中的API from sklearn.metrics import precision_score from sklearn.metrics import recall_score from sklearn.metrics import f1_score#0,1 二分類 p = precision_score(y_test,y_pred) #0,1,2多分類 p = precision_score(y_test,y_pred,average="macro") #average計算平均值的方式 #macro 簡單平均 #weighted 加權(quán)平均 預測的每一類的查準率*每一類真實樣本的占比 #召回率計算方式同查準率分類報告
from sklearn.metrics import classification_report r = classification_report(y_test,y_pred)如下:
ROC AUC
以FPR為橫坐標,以TPR為縱坐標 的折線圖
折線下的面積即為 AUC,類別不均衡時仍可以有效的評估模型,用于二分類
總結(jié)
- 上一篇: eclipse 断点调试快捷键
- 下一篇: 出师表《80后传》