一、模型評估?
1. 準確率(Accuracy):這是最基本的評估指標之一,表示模型在測試集上正確 分類樣本的比例。對于分類任務而言,準確率是衡量模型性能的直觀標準。
2. 損失函數值(Loss):觀察模型在測試集上的損失函數值,可以幫助了解模型的 泛化能力。低損失值表明模型在未見過的數據上的表現較好。
3. 精確度(Precision):精確度是指所有被模型預測為正類的樣本中實際為正類 的比例。它關注的是預測為正類的準確性。
4. 召回率(Recall):召回率是指所有實際為正類的樣本中被模型正確識別為正類 的比例。它反映了模型識別出所有正類的能力。
5. F1分數(F1 Score):F1分數是精確度和召回率的調和平均值,適用于需要同時 考慮精確度和召回率的情況,特別是在類別分布不均衡時更為有用。
6. 混淆矩陣(Confusion Matrix):這是一個表格,展示了分類模型預測結果與 真實標簽之間的比較,可以從中計算出精確度、召回率等指標。
7. ROC曲線和AUC值(Receiver Operating Characteristic Curve and Area Under the Curve):ROC曲線通過描繪不同閾值下的真正率(True Positive Rate, TPR)與假正率(False Positive Rate, FPR),來評估二分類模型的性能。 AUC(曲線下面積)是ROC曲線下的面積,其值范圍從0到1,AUC值越接近1, 表示模型的分類性能越好。
8. Top-k精度:在多分類任務中,有時會考慮模型預測的前k個最可能類別中是否包 含正確答案,這種情況下會用到Top-k精度作為評估指標。
二、準確率(Accuracy)
????????這是最基本的評估指標之一,表示模型在測試集上正確分類樣本的比例。對于分類任 務而言,準確率是衡量模型性能的直觀標準。
特點:
直觀但受類別不平衡影響大
三、損失函數值(Loss)
????????模型預測結果與真實標簽的差異量化值
四、精確度(Precision)
????????預測為正類的樣本中實際為正類的比例
五、召回率(Recall)
????????實際為正類的樣本中被正確預測的比例
六、F1分數(F1 Score)
????????F1 分數是精確度(Precision)和召回率(Recall)的調和平均數,它綜合考慮了模 型的預測精度和覆蓋率。
七、混淆矩陣(Confusion Matrix)
????????是一個表格,展示了分類模型預測結果與真實標簽之間的比較,可以從中計算出精 確度、召回率等指標。
預測類別1 | 預測類別2 | |
---|---|---|
真實類別1 | TP | FN |
真實類別2 | FP | TN |
八、ROC曲線和AUC值
????????ROC曲線通過描繪不同閾值下的真正率(True Positive Rate, TPR)與假正率(False Positive Rate, FPR),來評估二分類模型的性能。AUC(曲線下面積)是ROC曲線 下的面積,其值范圍從0到1,AUC值越接近1,表示模型的分類性能越好。
8.1、ROC曲線
????????以假正率(FPR)為橫軸,真正率(TPR)為縱軸的曲線
8.2、AUC值
????????ROC曲線下的面積
九、Top-k精度
????????模型預測概率前k高的類別中包含真實標簽的比例
指標 | 優點 | 局限性 | 適用場景 |
---|---|---|---|
準確率 | 直觀易理解 | 類別不平衡時失效 | 平衡數據集 |
F1分數 | 平衡精確度與召回率 | 僅關注單一類別(二分類) | 不均衡數據、二分類任務 |
AUC | 不受閾值影響 | 僅適用于二分類 | 類別不平衡的二分類任務 |
Top-k精度 | 容錯性強 | 計算復雜度高 | 細粒度分類任務 |
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix, roc_auc_score, top_k_accuracy_score# 真實標簽與預測結果
y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]
y_proba = [[0.7, 0.2, 0.1],[0.1, 0.3, 0.6],[0.3, 0.4, 0.3],[0.8, 0.1, 0.1],[0.6, 0.2, 0.2],[0.2, 0.5, 0.3]]# 計算各項指標
print("準確率:", accuracy_score(y_true, y_pred))
print("精確度(宏平均):", precision_score(y_true, y_pred, average='macro'))
print("召回率(宏平均):", recall_score(y_true, y_pred, average='macro'))
print("F1分數(宏平均):", f1_score(y_true, y_pred, average='macro'))
print("混淆矩陣:\n", confusion_matrix(y_true, y_pred))
print("Top-2精度:", top_k_accuracy_score(y_true, y_proba, k=2))# 二分類場景下的AUC計算示例
y_true_binary = [0, 1, 1, 0]
y_proba_binary = [0.1, 0.9, 0.8, 0.3]
print("AUC值:", roc_auc_score(y_true_binary, y_proba_binary))