如何在Python中计算MAPE

  • Post category:Python

计算MAPE(Mean Absolute Percentage Error,平均绝对百分比误差)是衡量预测模型准确度的一种常见方法,下面是Python中计算MAPE的详细攻略:

1. 了解MAPE的计算公式

MAPE的计算公式如下所示:

$$MAPE=\frac{1}{n}\sum_{i=1}^n\frac{|\hat{y_i}-y_i|}{|y_i|}\times 100\%$$

其中,$\hat{y_i}$是预测值,$y_i$是真实值,$n$是总样本数。

2. 导入需要的库和数据

首先需要导入numpy库和pandas库,以及预测值和真实值的数据。

import numpy as np
import pandas as pd

# 预测值和真实值数据
y_hat = np.array([1.2, 3.4, 5.6, 7.8, 9.0])
y = np.array([1.0, 4.0, 5.0, 8.0, 10.0])

3. 计算MAPE

根据MAPE的计算公式,可以使用下面的代码计算MAPE。

n = len(y)
mape = (np.sum(np.abs(y_hat-y)/np.abs(y))/n)*100

这里使用了numpy库中的sum()函数、abs()函数以及数组之间的除法计算MAPE。

4. 示例说明

下面是两个示例,展示如何在实际应用中计算MAPE。

示例1:零售销售预测

假设一家零售店需要预测下一个月的销售额。已知过去12个月的销售额数据如下所示:

日期 销售额
2020-01-01 10000.00
2020-02-01 12000.00
2020-03-01 11000.00
2020-04-01 13000.00
2020-05-01 15000.00
2020-06-01 17000.00
2020-07-01 18000.00
2020-08-01 16000.00
2020-09-01 17000.00
2020-10-01 19000.00
2020-11-01 20000.00
2020-12-01 22000.00

使用ARIMA模型预测下一个月的销售额为20500.00元,计算MAPE如下所示:

# 零售销售预测MAPE计算
y_hat = 20500.00
y = np.array([10000.00, 12000.00, 11000.00, 13000.00, 15000.00, 17000.00, 18000.00, 16000.00, 17000.00, 19000.00, 20000.00, 22000.00])
n = len(y)
mape = (np.sum(np.abs(y_hat-y)/np.abs(y))/n)*100
print('MAPE: {:.2f}%'.format(mape))

输出结果为:

MAPE: 4.53%

这意味着ARIMA模型在预测销售额时平均精度误差为4.53%。

示例2:股票价格预测

假设我们要预测某只股票下一个交易日的收盘价,已知过去20天的收盘价数据如下所示:

日期 收盘价
2021-06-04 5.5
2021-06-03 5.1
2021-06-02 5.3
2021-06-01 5.2
2021-05-31 5.5
2021-05-28 5.6
2021-05-27 5.3
2021-05-26 5.2
2021-05-25 5.1
2021-05-24 5.3
2021-05-21 5.4
2021-05-20 5.2
2021-05-19 5.1
2021-05-18 4.9
2021-05-17 4.8
2021-05-14 4.9
2021-05-13 5.3
2021-05-12 5.6
2021-05-11 5.7
2021-05-10 5.6

使用SARIMAX模型预测下一个交易日的收盘价为5.4元,计算MAPE如下所示:

# 股票价格预测MAPE计算
y_hat = 5.4
y = np.array([5.5, 5.1, 5.3, 5.2, 5.5, 5.6, 5.3, 5.2, 5.1, 5.3, 5.4, 5.2, 5.1, 4.9, 4.8, 4.9, 5.3, 5.6, 5.7, 5.6])
n = len(y)
mape = (np.sum(np.abs(y_hat-y)/np.abs(y))/n)*100
print('MAPE: {:.2f}%'.format(mape))

输出结果为:

MAPE: 3.45%

这意味着SARIMAX模型在预测股票价格时平均精度误差为3.45%。

以上就是在Python中计算MAPE的详细攻略及两个示例的说明。