Python 之Scikit-learn(七) -- Scikit-learn 中的不同度量指标详细介绍

Scikit-learn 提供了多种度量指标(metrics)来评估分类、回归、聚类等机器学习任务的性能。这些度量指标有助于判断模型的表现和优化模型参数。下面将详细介绍一些常用的度量指标及其适用情况。

1、分类任务的度量指标

准确率(Accuracy)

python 复制代码
from sklearn.metrics import accuracy_score
y_true = [0, 1, 1, 0, 1]
y_pred = [0, 1, 0, 0, 1]
accuracy = accuracy_score(y_true, y_pred)
print(f"Accuracy: {accuracy}")
  • 定义:准确率是正确预测的样本占总样本的比例。
  • 适用情况:适用于类别分布均衡的分类任务。
  • 示例:

精确率(Precision)

  • 定义:精确率是指所有被预测为正类的样本中实际为正类的比例。
  • 适用情况:适用于关注假阳性(False Positive)较多的场景。
  • 示例:
python 复制代码
from sklearn.metrics import precision_score
precision = precision_score(y_true, y_pred)
print(f"Precision: {precision}")

召回率(Recall)

  • 定义:召回率是指所有实际为正类的样本中被正确预测为正类的比例。
  • 适用情况:适用于关注假阴性(False Negative)较多的场景。
  • 示例:
python 复制代码
from sklearn.metrics import recall_score
recall = recall_score(y_true, y_pred)
print(f"Recall: {recall}")

F1分数(F1 Score)

  • 定义:F1分数是精确率和召回率的调和平均数。
  • 适用情况:适用于类别不均衡的分类任务。
  • 示例:
python 复制代码
from sklearn.metrics import f1_score
f1 = f1_score(y_true, y_pred)
print(f"F1 Score: {f1}")

ROC曲线和AUC(ROC Curve and AUC)

  • 定义:ROC曲线绘制了假阳性率(FPR)和真阳性率(TPR)之间的关系,AUC是ROC曲线下的面积。
  • 适用情况:适用于二分类任务,特别是在样本不平衡时。
  • 示例:
python 复制代码
from sklearn.metrics import roc_auc_score
y_scores = [0.1, 0.4, 0.35, 0.8, 0.7]
auc = roc_auc_score(y_true, y_scores)
print(f"AUC: {auc}")

2、回归任务的度量指标

均方误差(Mean Squared Error, MSE)

  • 定义:均方误差是预测值与真实值之差的平方的平均值。
  • 适用情况:适用于大多数回归任务,特别是对较大误差比较敏感时。
  • 示例:
python 复制代码
from sklearn.metrics import mean_squared_error
y_true = [3, -0, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
mse = mean_squared_error(y_true, y_pred)
print(f"MSE: {mse}")

均绝对误差(Mean Absolute Error, MAE)

  • 定义:均绝对误差是预测值与真实值之差的绝对值的平均值。
  • 适用情况:适用于对较大误差不太敏感的回归任务。
  • 示例:
python 复制代码
from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(y_true, y_pred)
print(f"MAE: {mae}")

R²分数(R² Score)

  • 定义:R²分数表示模型预测值与真实值的拟合程度,取值范围在-∞, 1,值越接近1表示模型越好。
  • 适用情况:适用于评估模型的整体拟合效果。
  • 示例:
python 复制代码
from sklearn.metrics import r2_score
r2 = r2_score(y_true, y_pred)
print(f"R² Score: {r2}")

3、聚类任务的度量指标

调整兰德指数(Adjusted Rand Index, ARI)

  • 定义:ARI是用于比较聚类结果与真实标签之间的一致性的指标,范围在-1, 1,值越大表示越好。
  • 适用情况:适用于有真实标签的聚类任务评估。
  • 示例:
python 复制代码
from sklearn.metrics import adjusted_rand_score
labels_true = [0, 0, 1, 1]
labels_pred = [0, 0, 0, 1]
ari = adjusted_rand_score(labels_true, labels_pred)
print(f"Adjusted Rand Index: {ari}")

轮廓系数(Silhouette Coefficient)

  • 定义:轮廓系数衡量一个样本与其自身聚类中的其他样本之间的相似性与其与最近的不同聚类中的样本之间的相似性,范围在-1, 1。
  • 适用情况:适用于评估无监督聚类任务的效果。
  • 示例:
python 复制代码
from sklearn.metrics import silhouette_score
from sklearn.cluster import KMeans
import numpy as np

X = np.array([[1, 2], [1, 4], [1, 0],
              [4, 2], [4, 4], [4, 0]])
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
labels = kmeans.labels_
silhouette = silhouette_score(X, labels)
print(f"Silhouette Coefficient: {silhouette}")

互信息(Mutual Information)

  • 定义:互信息衡量聚类结果与真实标签之间的信息共享程度,值越高表示聚类结果越好。
  • 适用情况:适用于有真实标签的聚类任务评估。
  • 示例:
python 复制代码
from sklearn.metrics import normalized_mutual_info_score
nmi = normalized_mutual_info_score(labels_true, labels_pred)
print(f"Normalized Mutual Information: {nmi}")
相关推荐
weixin_433417675 分钟前
2026.1024【瑞萨边缘AI技术研讨会】上海站【AI 动手实践/培训环节】总结
人工智能
miofly7 分钟前
Sebastian Raschka 11 小时视频课:用 PyTorch 从零构建推理模型
人工智能
LiuPig刘皮哥9 分钟前
小可爱xiaokeai3D陪玩视觉设计方案
人工智能·3d·虚拟陪伴·虚拟偶像·xiaokeai
第404号工位13 分钟前
浏览器的“无痕模式”是当代最大安慰剂?我用 30 行 JS 提取硬件指纹,跨网络换代理照样精准锁定你
linux·人工智能·python
刘胡子大叔16 分钟前
用 system_prompt 控制智能体说话风格
人工智能·prompt
Agent世界17 分钟前
千问Go上线我的应用:一句话生成可部署 AI 软件的技术拆解
开发语言·人工智能·golang·ai智能体
xiejava101819 分钟前
【一个人的SOC】(12) AI 安全报告与主动推送——五种场景的自动化闭环
人工智能·安全·自动化·开源软件·安全运营·ai soc
AI前端工程狮21 分钟前
从 Function Calling 到 MCP(四):把 Server 部署上线前,先处理好这五件事
人工智能·程序员
虎鲸不是鱼22 分钟前
AI 自动化逆向(十七)解码器、反汇编器、反编译器:能力边界表
人工智能·自动化·大模型·逆向·ai逆向
凌界天行24 分钟前
知名的无人机侦测肩灯制造厂名声
python