一、classification_report簡介
classification_report是Scikit-learn庫中的一個函數,它可以對分類模型的性能進行評估。classification_report主要用於計算每個類別的精準率、召回率、F1值以及支持度等指標。
from sklearn.metrics import classification_report
print(classification_report(y_true, y_pred))
其中y_true代表真實類別標籤,y_pred代表模型預測的類別標籤。
二、分類模型性能指標說明
1. 精準率(Precision)
精準率指的是在所有被分類器預測為正例的樣本中,確實屬於正例的概率。在二分類問題中:
精準率 = TP / (TP + FP)
其中TP(True Positive)表示真正例的個數,FP(False Positive)表示假正例的個數。
2. 召回率(Recall)
召回率指的是在所有正例中,被分類器正確預測為正例的概率。在二分類問題中:
召回率 = TP / (TP + FN)
其中FN(False Negative)表示假反例的個數。
3. F1值
F1值是精準率和召回率的調和平均值,同時考慮了兩者的影響。在二分類問題中:
F1值 = 2 * (精準率 * 召回率) / (精準率 + 召回率)
4. 支持度
支持度指的是給定類別的樣本數。
三、分類模型性能評估示例
1. 二分類問題
假設有一個二分類的模型,根據數據集的情況,我們得到以下混淆矩陣:
預測值 | ||
---|---|---|
真實值 | 1 | 0 |
0 | 1 |
根據混淆矩陣,我們可以得到以下計算結果:
y_true = [1, 1, 1, 0, 0, 0]
y_pred = [1, 0, 1, 0, 1, 0]
print(classification_report(y_true, y_pred))
precision recall f1-score support
0 0.50 0.33 0.40 3
1 0.50 0.67 0.57 3
accuracy 0.50 6
macro avg 0.50 0.50 0.49 6
weighted avg 0.50 0.50 0.49 6
其中precision、recall、f1-score和support分別為精準率、召回率、F1值和支持度。從上面的結果中可以看到:
- 精準率0的值為0.50,表示在預測為0的樣本中,有50%的樣本確實屬於0。
- 召回率0的值為0.33,表示在所有真實為0的樣本中,只有33%的樣本被預測為0。
- F1值的平均值為0.49。
2. 多分類問題
對於多分類問題,classification_report同樣適用。假設有一個3分類的模型,根據數據集的情況,我們得到以下混淆矩陣:
預測值 | |||
---|---|---|---|
真實值 | 1 | 0 | 0 |
0 | 2 | 1 | |
0 | 1 | 1 |
根據混淆矩陣,我們可以得到以下計算結果:
y_true = [0, 1, 2, 0, 2, 1]
y_pred = [1, 1, 2, 0, 0, 1]
print(classification_report(y_true, y_pred))
precision recall f1-score support
0 0.50 0.50 0.50 2
1 0.33 0.67 0.44 3
2 1.00 0.50 0.67 2
accuracy 0.50 7
macro avg 0.61 0.56 0.54 7
weighted avg 0.61 0.50 0.53 7
從上面的結果中可以看到:
- 精準率1的值為0.33,表示在預測為1的樣本中,只有33%的樣本確實屬於1。
- 召回率1的值為0.67,表示在所有真實為1的樣本中,有67%的樣本被預測為1。
- F1值的平均值為0.54。
四、總結
classification_report是一個非常有用的函數,它可以幫助我們對分類模型的性能進行評估,並從多個角度分析模型的表現。在使用classification_report時,我們需要注意計算的指標含義以及混淆矩陣的準備工作。
原創文章,作者:OMDX,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/143730.html