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}")
相关推荐
MarsBighead几秒前
(二)PosrgreSQL: Python3 连接Pgvector出错排查
python·postgresql·向量数据库·pgvector
编码浪子7 分钟前
Transformer的编码机制
人工智能·深度学习·transformer
深蓝海拓21 分钟前
Pyside6(PyQT5)中的QTableView与QSqlQueryModel、QSqlTableModel的联合使用
数据库·python·qt·pyqt
IE0621 分钟前
深度学习系列76:流式tts的一个简单实现
人工智能·深度学习
GIS数据转换器25 分钟前
城市生命线安全保障:技术应用与策略创新
大数据·人工智能·安全·3d·智慧城市
无须logic ᭄28 分钟前
CrypTen项目实践
python·机器学习·密码学·同态加密
Channing Lewis41 分钟前
flask常见问答题
后端·python·flask
Channing Lewis43 分钟前
如何保护 Flask API 的安全性?
后端·python·flask
水兵没月2 小时前
钉钉群机器人设置——python版本
python·机器人·钉钉
一水鉴天2 小时前
为AI聊天工具添加一个知识系统 之65 详细设计 之6 变形机器人及伺服跟随
人工智能