16 模型评估之评估指标

在机器学习中,模型的性能评估是至关重要的一步,能够帮助我们理解模型的表现并进行必要的调整。在本篇中,我们将重点讨论一些常用的评估指标,帮助你在模型评估时做出明智的决策。我们将结合实际案例,使用 Scikit-Learn 的功能来实现评估指标的计算。

1. 分类评估指标

对于分类问题,常用的评估指标包括 准确率精确率召回率F1-score。下面我们分别介绍这些指标及其计算方法。

1.1 准确率

准确率是指预测正确的样本占总样本的比例。其计算公式为:

$$
\text{准确率} = \frac{TP + TN}{TP + TN + FP + FN}
$$

其中:

  • $TP$:真正例(True Positives)
  • $TN$:真负例(True Negatives)
  • $FP$:假正例(False Positives)
  • $FN$:假负例(False Negatives)

Scikit-Learn 中,可以使用 accuracy_score 函数来计算准确率。

1
2
3
4
5
6
7
8
9
from sklearn.metrics import accuracy_score

# 实际标签和预测标签
y_true = [1, 0, 1, 1, 0, 1]
y_pred = [1, 0, 0, 1, 0, 1]

# 计算准确率
accuracy = accuracy_score(y_true, y_pred)
print(f"准确率: {accuracy:.2f}")

1.2 精确率

精确率是指被预测为正类的样本中,真实为正类的比例。其计算公式为:

$$
\text{精确率} = \frac{TP}{TP + FP}
$$

我们同样可以使用 precision_score 函数来计算精确率。

1
2
3
4
5
from sklearn.metrics import precision_score

# 计算精确率
precision = precision_score(y_true, y_pred)
print(f"精确率: {precision:.2f}")

1.3 召回率

召回率是指真实为正类的样本中,被正确预测为正类的比例。其计算公式为:

$$
\text{召回率} = \frac{TP}{TP + FN}
$$

Scikit-Learn 提供了 recall_score 函数来计算召回率。

1
2
3
4
5
from sklearn.metrics import recall_score

# 计算召回率
recall = recall_score(y_true, y_pred)
print(f"召回率: {recall:.2f}")

1.4 F1-score

F1-score是精确率和召回率的调和平均数,考虑到二者的平衡。其计算公式为:

$$
\text{F1-score} = 2 \times \frac{\text{精确率} \times \text{召回率}}{\text{精确率} + \text{召回率}}
$$

使用 f1_score 函数可以方便地计算 F1-score。

1
2
3
4
5
from sklearn.metrics import f1_score

# 计算 F1-score
f1 = f1_score(y_true, y_pred)
print(f"F1-score: {f1:.2f}")

2. 回归评估指标

对于回归问题,常用的评估指标包括 均方误差均方根误差R²得分

2.1 均方误差(MSE)

均方误差是预测值与实际值之间误差的平方的平均值。其计算公式为:

$$
\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2
$$

Scikit-Learn 中可以使用 mean_squared_error

1
2
3
4
5
6
7
8
9
from sklearn.metrics import mean_squared_error

# 实际值与预测值
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]

# 计算均方误差
mse = mean_squared_error(y_true, y_pred)
print(f"均方误差: {mse:.2f}")

2.2 均方根误差(RMSE)

均方根误差是均方误差的平方根,用来更直观地表示误差的级别。公式为:

$$
\text{RMSE} = \sqrt{\text{MSE}}
$$

1
2
3
4
5
import numpy as np

# 计算均方根误差
rmse = np.sqrt(mse)
print(f"均方根误差: {rmse:.2f}")

2.3 R²得分

R²得分表示模型对数据变异性的解释能力。其定义为:

$$
R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}i)^2}{\sum{i=1}^{n} (y_i - \bar{y})^2}
$$

可以使用 r2_score 来计算 R²得分。

1
2
3
4
5
from sklearn.metrics import r2_score

# 计算 R²得分
r2 = r2_score(y_true, y_pred)
print(f"R²得分: {r2:.2f}")

结语

通过上述介绍,我们学习了多种评估指标,以及如何使用 Scikit-Learn 来实现它们的计算。在下一篇中,我们将深入探讨模型评估中的一个重要技术——交叉验证(Cross-Validation)。利用交叉验证,我们能够进一步评估模型的稳健性,避免过拟合(Overfitting)的风险。因此,继续关注这个系列教程,掌握模型评估的全貌!

16 模型评估之评估指标

https://zglg.work/scikit-learn-zero/16/

作者

AI免费学习网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

学习下节

复习上节

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论