计算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的详细攻略及两个示例的说明。