日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

分类模型评价指标

發布時間:2023/12/10 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分类模型评价指标 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

分類評價

  • 準確率 平均準確率
    • 準確率:
    • 平均準確率:
    • 例子
    • 代碼
  • 混淆矩陣
  • 查準率 召回率 f1_score
  • 分類報告
  • ROC AUC

準確率 平均準確率

準確率:

對于驗證集,模型預測正確的樣本數/ 預測的總樣本數
accuracy=ncorrectntotalaccuracy = \frac {n_{correct}} {n_{total}}accuracy=ntotal?ncorrect??
缺點:
在訓練集,驗證集類別嚴重不平衡時,準確率無法全面評估模型

平均準確率:

對每個類別,計算準確率,然后所有類別準確率 求均值,作為模型的準確率

如:驗證集中0類有95個樣本,1類有5分樣本,模型預測的時候將全部樣本預測為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

代碼

#手動實現計算準確率 n_correct = (y_pred == y_test).sum() n_total = y_test.shape[0] acc = n_correct / n_total#sklearn 實現 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)

混淆矩陣

更詳細的描述模型預測結果
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?

#sklearn API from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test,y_pred)

查準率 召回率 f1_score

查準率,召回率是一對矛盾的指標,一般同時使用
f1_score,是對兩者的融合

查準率precision_score:從預測的角度出發,預測正確的樣本數 / 預測為某一類的總數,二分類中只計算正類,
多分類中計算預測的每一類的查準率,求均值作為模型的查準率

召回率recall_score:從真實的角度出發,預測正確的樣本數 / 某一類真實樣本數,二分類只計算正類
多分類計算每一類的召回率,求均值作為模型的召回率

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 加權平均 預測的每一類的查準率*每一類真實樣本的占比 #召回率計算方式同查準率

分類報告

from sklearn.metrics import classification_report r = classification_report(y_test,y_pred)

如下:

ROC AUC

以FPR為橫坐標,以TPR為縱坐標 的折線圖

折線下的面積即為 AUC,類別不均衡時仍可以有效的評估模型,用于二分類

#sklearn API from sklearn.metrics import roc_curve from sklearn.metrics import roc_auc_score fpr,tpr,threshold = roc_curve(y_test,y_pred_proba[:,1],pos_label=1) auc = roc_auc_score(y_test,y_pred_proba[:,1])

總結

以上是生活随笔為你收集整理的分类模型评价指标的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。