很多同学问:“模型好不好,怎么量化?”
本篇系统梳理 sklearn.metrics 中常用且“够用”的多分类指标,并给出一段可直接运行的示例代码,覆盖:准确率、宏/微/加权 F1、Kappa、MCC、混淆矩阵(计数/归一化)、Top-K 准确率、ROC-AUC(OvR/OvO)、PR-AUC、对数损失、(多类)Brier 分数、以及 ROC/PR 曲线绘制。
🧭 指标速览与使用场景
-
整体验证
accuracy_score(OA,总体准确率)balanced_accuracy_score(类别不均衡时更合理)
-
逐类与加权
precision_recall_fscore_support/classification_report- 平均方式:
average="macro" | "micro" | "weighted"
-
一致性/稳健性
cohen_kappa_score(Kappa)matthews_corrcoef(MCC,抗不均衡)
-
混淆矩阵
confusion_matrix(计数 & 归一化)
-
概率质量/排序质量
roc_auc_score(多类:multi_class="ovr"|"ovo";average="macro"|"weighted")average_precision_score(PR-AUC)top_k_accuracy_score(Top-K)log_loss(对数损失,校准敏感)- 多类 Brier(自定义:one-hot 与
predict_proba的 MSE 均值)
-
曲线
- ROC 曲线(micro/macro)
- Precision-Recall 曲线(micro)
经验:类不均衡→看
balanced_accuracy/macro-F1/Kappa/MCC;
要概率好坏→看log_loss/ROC-AUC/PR-AUC;
Top-K 检索/多候选→看top_k_accuracy_score。
💻 一键可跑代码(修改 DATA_DIR 后直接运行)
# -*- coding: utf-8 -*-
"""
Sklearn案例⑧:metrics 全解析(多分类 / 概率与曲线)
数据:KSC(将 DATA_DIR 改为你的数据路径)
"""
import os, numpy as np, scipy.io as sio, matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import (accuracy_score, balanced_accuracy_score,
precision_recall_fscore_support, classification_report, confusion_matrix,
cohen_kappa_score, matthews_corrcoef, top_k_accuracy_score, roc_auc_score,
average_precision_score, log_loss)
from sklearn.preprocessing import label_binarize
# ============ 参数 ============
DATA_DIR = "your_path" # ←← 修改为包含 KSC.mat / KSC_gt.mat 的目录
PCA_DIM, TRAIN_RATIO, SEED = 30, 0.3, 42
# ============ 1. 载入与预处理 ============
X = sio.loadmat(os.path.join(DATA_DIR, "KSC.mat"))["KSC"].astype(np.float32) # (H,W,B)
Y = sio.loadmat(os.path.join(DATA_DIR, "KSC_gt.mat"))["KSC_gt"].astype(int) # (H,W)
coords = np.argwhere(Y != 0)
Xpix = X[coords[:,0], coords[:,1]] # (N,B)
y = Y[coords[:,0], coords[:,1]] - 1 # 0..C-1
num_classes = int(y.max

最低0.47元/天 解锁文章
17万+

被折叠的 条评论
为什么被折叠?



