📅  最后修改于: 2023-12-03 14:44:08.706000             🧑  作者: Mango
在预测误差评估中,mAPE(Mean Absolute Percentage Error)是一个广泛使用的指标。它是预测值与真实值之间绝对误差的百分比的平均值,通常用于衡量时间序列预测模型的精度。
在Python中,我们可以使用NumPy和Pandas等库来计算mAPE。
$$\mathrm{mAPE} = \dfrac{100}{n}\sum\limits_{i=1}^{n}\left|\dfrac{y_i - \hat{y_i}}{y_i}\right|$$
其中,$y_i$是实际值,$\hat{y_i}$是预测值,$n$是数据点的数量。
使用NumPy,我们可以通过以下几个步骤计算mAPE:
import numpy as np
y_true = np.array([1, 2, 3, 4, 5])
y_pred = np.array([1.2, 2.2, 2.8, 4.1, 5.3])
abs_error = np.abs((y_true - y_pred) / y_true)
mape = np.mean(abs_error) * 100
完整代码片段如下(使用assert语句进行单元测试):
import numpy as np
def calculate_mape(y_true, y_pred):
abs_error = np.abs((y_true - y_pred) / y_true)
mape = np.mean(abs_error) * 100
return mape
# 测试
y_true = np.array([1, 2, 3, 4, 5])
y_pred = np.array([1.2, 2.2, 2.8, 4.1, 5.3])
assert np.round(calculate_mape(y_true, y_pred), 2) == 9.8
使用Pandas,我们可以通过以下几个步骤计算mAPE:
import pandas as pd
y_true = pd.Series([1, 2, 3, 4, 5])
y_pred = pd.Series([1.2, 2.2, 2.8, 4.1, 5.3])
abs_error = (y_pred - y_true).abs() / y_true
mabe = abs_error.mean() * 100
完整代码片段如下(使用assert语句进行单元测试):
import pandas as pd
def calculate_mape(y_true, y_pred):
abs_error = (y_pred - y_true).abs() / y_true
mape = abs_error.mean() * 100
return mape
# 测试
y_true = pd.Series([1, 2, 3, 4, 5])
y_pred = pd.Series([1.2, 2.2, 2.8, 4.1, 5.3])
assert round(calculate_mape(y_true, y_pred), 2) == 9.8
以上就是Python中计算mAPE的两种方法,根据实际应用选择适合的方法即可。