今天給大家帶來一篇如何評價模型的好壞以及模型的得分 最下麵的代碼最有用 一、錯誤率與精度(accuracy 準確) 錯誤率和精度是分類任務中最常用的兩種性能度量,既適用於二分類任務,也適用於多分類任務。錯誤率是分類錯誤的樣本數占樣本總數的比例,精度則是分類正確的樣本數占樣本總數的比例。 from s ...
今天給大家帶來一篇如何評價模型的好壞以及模型的得分
最下麵的代碼最有用
一、錯誤率與精度(accuracy 準確)
錯誤率和精度是分類任務中最常用的兩種性能度量,既適用於二分類任務,也適用於多分類任務。錯誤率是分類錯誤的樣本數占樣本總數的比例,精度則是分類正確的樣本數占樣本總數的比例。
from sklearn import metrics
print('模型精度:',metrics.accuracy_score(y_test,y_predict))
二、查準率(precision)、查全率(recall)與F1-score
查準率(P值)是針對我們的預測結果而言的,它表示的是預測為正的樣本中有多少是真正的正樣本
查全率(R值)是針對我們原來的樣本而言的,它表示的是樣本中的正例有多少被預測正確了
查準率 P與查全率 R 分別定義為
查準率和查全率是一對矛盾的度量.一般來說,查準率高時,查全率往往偏低;而查全率高時,查準率往往偏低。
F1-score,是統計學中用來衡量二分類模型精確度的一種指標。它同時兼顧了分類模型的準確率和召回率。F1分數可以看作是模型準確率和召回率的一種加權平均,它的最大值是1,最小值是0。
隨著閾值的變化,就像假設檢驗的兩類錯誤一樣,如下圖所示召回率和精確率不能同時提高,因此我們就需要一個指標來調和這兩個指標,於是人們就常用F1-score來進行表示:
print('查準率:',metrics.precision(y_test,y_predict))
print('查全率:',metrics.recall_score(y_test,y_predict))
print('F1-score:',metrics.precision_score(y_test,y_predict))
三、ROC曲線、AUC
ROC(Receiver Operating Characteristic) 受試者工作特征曲線的縱軸是"真正例率" (True Positive Rate,簡稱TPR) ,也稱靈敏度,橫軸是"假正例率" (False Positive Rate,簡稱FPR) ,也稱1-特異度,兩者分別定義為
print('AUC:',metrics.roc_auc_score(y_test,y_pred))
四、log-loss
很多機器學習的演算法通常會用logloss作為模型評價的指標,對數損失(Log loss)亦被稱為邏輯回歸損失(Logistic regression loss)或交叉熵損失(Cross-entropy loss),簡單來說就是邏輯回歸的損失函數。
y_pred=LR.(predict_proba(X))[:,1]預測類別為1的概率 print('log-loss:',metrics.log_loss(y_test,y_pred)) #準確率(accuracy),精確(precision_weighted),召回(recall_weighted),F1(f1_weighted) #導入評分的包 from sklearn.model_selection import cross_val_score # cv=6 是把數據分成6分,交叉驗證, mea平均數,確保數據的準確率 print('準確{}'.format(cross_val_score(gaussian,test_X,test_Y,scoring='accuracy',cv=6).mean())) print('精確{}'.format(cross_val_score(gaussian,test_X,test_Y,scoring='precision_weighted',cv=6).mean())) print('召回{}'.format(cross_val_score(gaussian,test_X,test_Y,scoring='recall_weighted',cv=6).mean())) print('F1值{}'.format(cross_val_score(gaussian,test_X,test_Y,scoring='f1_weighted',cv=6).mean())) #查看分類報告 from sklearn.metrics import classification_report # 查看更詳細的, target_names=iris.target_names() print(classification_report(y_pred=y_pre,y_true = train_Y,target_names=iris.target_names)) #support :原個數類別個數![](file:///C:/Users/%E4%BC%AA%E5%96%84/AppData/Local/Temp/enhtmlclip/Image.png)