sklearn分类器性能评估
分類器性能評估
在許多實際問題中,衡量分類器任務的成功程度是通過固定的性能指標來獲取。一般最常見使用的是準確率,即預測結果正確的百分比。然而有時候,我們關注的是負樣本是否被正確診斷出來。例如,關于腫瘤的的判定,需要更加關心多少惡性腫瘤被正確的診斷出來。也就是說,在二類分類任務下,預測結果(Predicted Condition)與正確標記(True Condition)之間存在四種不同的組合,構成混淆矩陣。
在二類問題中,如果將一個正例判為正例,那么就可以認為產生了一個真正例(True Positive,TP);如果對一個反例正確的判為反例,則認為產生了一個真反例(True Negative,TN)。相應地,兩外兩種情況則分別稱為偽反例(False Negative,FN,也稱)和偽正例(False Positive,TP),四種情況如下圖:
在分類中,當某個類別的重要性高于其他類別時,我們就可以利用上述定義出多個逼錯誤率更好的新指標。第一個指標就是正確率(Precision),它等于TP/(TP+FP),給出的是預測為正例的樣本中占真實結果總數的比例。第二個指標是召回率(Recall)。它等于TP/(TP+FN),給出的是預測為正例的真實正例占所有真實正例的比例。
那么除了正確率和精確率這兩個指標之外,為了綜合考量召回率和精確率,我們計算這兩個指標的調和平均數,得到F1指標(F1 measure):
$${F1}={\frac{2}{\frac{1}{Precision}{+}\frac{1}{Recall}}}$$
之所以使用調和平均數,是因為它除了具備平均功能外,還會對那些召回率和精確率更加接近的模型給予更高的分數;而這也是我們所希望的,因為那些召回率和精確率差距過大的學習模型,往往沒有足夠的使用價值。
sklearn.metrics.classification_report
sklearn中metrics中提供了計算四個指標的模塊,也就是classification_report。
classification_report(y_true, y_pred, labels=None, target_names=None, digits=2)"""計算分類指標:param y_true:真實目標值:param y_pred:分類器返回的估計值:param target_names:可選的,計算與目標類別匹配的結果:param digits:格式化輸出浮點值的位數:return :字符串,三個指標值"""我們通過一個例子來分析一下指標的結果:
from sklearn.metrics import classification_report y_true = [0, 1, 2, 2, 2] y_pred = [0, 0, 2, 2, 1] target_names = ['class 0', 'class 1', 'class 2'] print(classification_report(y_true, y_pred, target_names=target_names))precision recall f1-score supportclass 0 0.50 1.00 0.67 1class 1 0.00 0.00 0.00 1class 2 1.00 0.67 0.80 3avg / total 0.70 0.60 0.61 5總結
以上是生活随笔為你收集整理的sklearn分类器性能评估的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux导出mysql下ssl证书_L
- 下一篇: python中的__new__概念(工厂