sklearn分类器性能评估
分類器性能評估
在許多實(shí)際問題中,衡量分類器任務(wù)的成功程度是通過固定的性能指標(biāo)來獲取。一般最常見使用的是準(zhǔn)確率,即預(yù)測結(jié)果正確的百分比。然而有時(shí)候,我們關(guān)注的是負(fù)樣本是否被正確診斷出來。例如,關(guān)于腫瘤的的判定,需要更加關(guān)心多少惡性腫瘤被正確的診斷出來。也就是說,在二類分類任務(wù)下,預(yù)測結(jié)果(Predicted Condition)與正確標(biāo)記(True Condition)之間存在四種不同的組合,構(gòu)成混淆矩陣。
在二類問題中,如果將一個(gè)正例判為正例,那么就可以認(rèn)為產(chǎn)生了一個(gè)真正例(True Positive,TP);如果對一個(gè)反例正確的判為反例,則認(rèn)為產(chǎn)生了一個(gè)真反例(True Negative,TN)。相應(yīng)地,兩外兩種情況則分別稱為偽反例(False Negative,FN,也稱)和偽正例(False Positive,TP),四種情況如下圖:
在分類中,當(dāng)某個(gè)類別的重要性高于其他類別時(shí),我們就可以利用上述定義出多個(gè)逼錯(cuò)誤率更好的新指標(biāo)。第一個(gè)指標(biāo)就是正確率(Precision),它等于TP/(TP+FP),給出的是預(yù)測為正例的樣本中占真實(shí)結(jié)果總數(shù)的比例。第二個(gè)指標(biāo)是召回率(Recall)。它等于TP/(TP+FN),給出的是預(yù)測為正例的真實(shí)正例占所有真實(shí)正例的比例。
那么除了正確率和精確率這兩個(gè)指標(biāo)之外,為了綜合考量召回率和精確率,我們計(jì)算這兩個(gè)指標(biāo)的調(diào)和平均數(shù),得到F1指標(biāo)(F1 measure):
$${F1}={\frac{2}{\frac{1}{Precision}{+}\frac{1}{Recall}}}$$
之所以使用調(diào)和平均數(shù),是因?yàn)樗司邆淦骄δ芡?#xff0c;還會(huì)對那些召回率和精確率更加接近的模型給予更高的分?jǐn)?shù);而這也是我們所希望的,因?yàn)槟切┱倩芈屎途_率差距過大的學(xué)習(xí)模型,往往沒有足夠的使用價(jià)值。
sklearn.metrics.classification_report
sklearn中metrics中提供了計(jì)算四個(gè)指標(biāo)的模塊,也就是classification_report。
classification_report(y_true, y_pred, labels=None, target_names=None, digits=2)"""計(jì)算分類指標(biāo):param y_true:真實(shí)目標(biāo)值:param y_pred:分類器返回的估計(jì)值:param target_names:可選的,計(jì)算與目標(biāo)類別匹配的結(jié)果:param digits:格式化輸出浮點(diǎn)值的位數(shù):return :字符串,三個(gè)指標(biāo)值"""我們通過一個(gè)例子來分析一下指標(biāo)的結(jié)果:
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總結(jié)
以上是生活随笔為你收集整理的sklearn分类器性能评估的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux导出mysql下ssl证书_L
- 下一篇: redis 计数 java_rediss