Introduction
- 前面對兩種分類模型皆調用
score()
方法查看準確率,其就是一種對模型的評估,- 返回預測結果正確的百分比
- sklearn還存在許多對預測模型評估的方法皆收錄在
sklearn.metrics
中 - 這一章節只著重在對分類模型的評估
- 還有其他對分類模型評估的指標包括 精確率(precision) 與 召回率(recall)
混淆矩陣(confusion matrix)
在分類任務下,預測結果(predicted condition)與正確標記(true condition)之間存在四種不同的組合,構成所謂的混淆矩陣(適用於多分類)
- 可使用
sklearn.metrics.confusion_matrix
搭配matplotlib
及seaborn.heatmap
來繪製
Example
1 | from sklearn.datasets import load_iris |
- 要是使用jupyter notebook進行繪製可在導入
matplotlib.pyplot
後添加以下code,取代plt.show()
可讓圖形不會在新視窗呈現1
%matplotlib inline
Result
1 | accuracy score: 0.9736842105263158 |
其他評估方法
精確率(precision)
預測值為True情況下真實值仍為True所佔的比例(查得準)
- 一般較少使用精確率來評估模型
召回率(recall)
真實值為True的情況下預測值仍為True所佔的比例(查得全,對正樣本的區分能力)
- 例如癌症的分析,寧願錯估沒有癌症的人得癌,也不能將得癌症的人錯估成沒有癌症
- 上述案例我們會希望召回率越高越好甚至100%,而沒有那麼在乎準確率
F1-score
- 是一種用來評估模型穩健程度的標準
其公式如下
其反應的是再提高召回率的同時是不是有維持一定的準確率
- 仍是越大越好,是一個綜合的評判標準
分類模型評估的API
- 使用
sklearn.metrics.classification_report
classification_report
- 調用
classification_report(y_true,y_pred,target_names=None)
- y_true: 真實目標值
- y_pred: estimator預測的目標值
- target_names : 目標不同類別的名稱
- 返回每個類別precision及recall
Example
1 | from sklearn.datasets import load_iris |
結果
1 | accuracy score: 0.8947368421052632 |