如何在 Python 中计算平均绝对误差?

2025年1月5日 | 阅读 4 分钟

引言

在统计学或机器学习中,平均绝对误差(MAE)用于检查模型的预测准确性。它提供了一种简单的方式来比较预测值与实际值。本文讨论了平均绝对误差的概念,并指导您如何使用 Python 编程来计算它。

理解平均绝对误差

平均绝对误差(MAE)可以被视为实际值与预测值之间所有绝对误差的平均值。最终,这个系统也非常有用,因为它有助于解决回归等问题。计算 MAE 的公式非常直接

平均绝对误差 = (1/n) * ∑|yi - xi|

其中,

  • Σ:求和的希腊字母
  • Yi:第 i 个观测值的实际值
  • Xi:第 i 个观测值的计算值
  • N:观测值的总数

用于计算平均绝对误差的 Python 库

Python 中没有专门用于计算平均绝对误差(MAE)的库。但是,我们可以使用以下公式来计算它

Python 通过使用几个不同的库可以轻松计算平均绝对误差。最常用的两个库是 NumPy 和 scikit-learn。

使用 NumPy

当需要在 Python 中执行数值计算时,最常用的库是 NumPy。它通过提供高级数学函数,提供了一种高效处理数组数据的方式。让我们看看如何使用 NumPy 计算 MAE

输出

Mean Absolute Error: 3.2

说明

  • Python 代码主要在 NumPy 中运行,从那里执行所有数值任务。
  • 将初始化两个列表 "actual_values"(实际值)和 "predicted_values"(预测值),用于存储数据集中的实际值和算法预测的值。
  • 可以通过将预测值从实际值中减去,然后取该差值的绝对值(np.abs)来计算绝对差值。
  • 利用 "np.mean()" 函数来计算这些差值的平均值。
  • 计算出的平均值显示了实际值和预测值之间的差异。
  • 使用 print 函数显示输出。
  • 如示例所示,实际值和预测值之间的平均绝对差为 5.6 个单位,这是通过 MAE(平均绝对误差)计算得出的。
  • 此代码旨在更高效、更轻松地计算 MAE,以便您能更好地理解它。

使用 scikit-learn

Scikit-learn 是 Python 中广泛使用的机器学习库,我们可以通过它来呈现、分析和建模我们的数据。它包含一个 metrics(指标)模块,其中包含各种评估指标,包括平均绝对误差。

输出

Mean Absolute Error: 5.6

说明

  • 可以从 scikit-learn 库的 metrics 模块导入 'mean_absolute_error' 来计算平均绝对误差。
  • 两个名为 'actual_values' 和 'predicted_values' 的列表分别代表我们已预测的值。
  • 为了找出观测值和预测值之间的平均绝对误差,我们使用 'mean_absolute_error' 函数。
  • 返回的值已保存在名为 'mae' 的变量中。
  • 使用打印函数获取平均绝对误差。
  • 对于给定的问题,平均绝对误差(MAE)约为 5.6,这意味着任何预测值与真实值之间的误差大约为 5.6 个单位。
  • scikit-learn 的此功能一直用于评估预测数据,以便以标准化的方式获得准确性。

处理时间序列数据中的平均绝对误差

对于时间序列数据,尽管可以使用平均绝对误差,但需要谨慎处理其含义。时间顺序本身足以提高时间序列数据的模型准确性。以下是一些在时间序列场景中处理 MAE 的技巧:

滚动平均绝对误差

  • 我们可以通过滚动窗口分析来检测随时间推移的效率转移,因此可以通过它来计算 MAE。
  • 这可用于检测误差中的季节性或特定模式。

加权平均绝对误差

  • 根据误差的发生时间对其进行分类,然后为其分配特定权重。
  • 如果需要,这将有助于优先考虑最近的预测而不是历史预测。

按时间索引评估

  • 通过计算不同时间段的 MAE,可以检查预测值与实际值之间发生显著变化的时间点。

结论

本详细指南解释了平均绝对误差(MAE)及其在 Python 中的计算方法。我们讨论了平均绝对误差,如何使用 NumPy 进行测量,以及它在检查预测准确性方面的重要性。

计算平均绝对误差可以帮助我们找出数据集中的不一致之处。此外,这还可以帮助我们提高模型的性能。