平均绝对百分比误差(Mean Absolute Percentage Error,简称MAPE)是一种衡量回归模型预测准确性的指标。它通过计算预测值与真实值之间的绝对百分比误差的平均值来评估模型的性能。与传统的百分比误差不同,MAPE将百分比误差转换为相对值,范围在[0, 1]之间,其中0表示完美预测,而1表示误差为真实值的100%。
在实际应用中,MAPE是一个非负浮点数,最佳值为0.0。然而,需要注意的是,当真实值非常接近零时,MAPE可能会变得非常大,因为误差是相对于真实值计算的。在这种情况下,为了避免除以零的错误,通常会引入一个非常小的正数(epsilon)来进行计算。
在Python的sklearn库中,可以使用mean_absolute_percentage_error
函数来计算MAPE。该函数接受两个主要参数:y_true
和y_pred
,分别代表真实值和预测值。此外,还可以通过sample_weight
参数为每个样本指定权重,以及通过multioutput
参数来指定多输出值的聚合方式。
以下是使用mean_absolute_percentage_error
函数的示例代码:
from sklearn.metrics import mean_absolute_percentage_error
# 单输出值示例
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
print(mean_absolute_percentage_error(y_true, y_pred))
# 多输出值示例
y_true = [[0.5, 1], [-1, 1], [7, -6]]
y_pred = [[0, 2], [-1, 2], [8, -5]]
print(mean_absolute_percentage_error(y_true, y_pred))
# 指定多输出值权重示例
multioutput_weights = [0.3, 0.7]
print(mean_absolute_percentage_error(y_true, y_pred, multioutput=multioutput_weights))
在上述示例中,首先导入了mean_absolute_percentage_error
函数,然后定义了真实值y_true
和预测值y_pred
。接着,分别计算了单输出值和多输出值的MAPE,并打印了结果。在多输出值示例中,还指定了每个输出值的权重,以计算加权平均的MAPE。
需要注意的是,当真实值中存在零值时,MAPE可能会变得非常大,因为误差是相对于真实值计算的。为了避免这种情况,可以通过引入一个非常小的正数(epsilon)来进行计算。例如:
y_true = [1.0, 0.0, 2.4, 7.0]
y_pred = [1.2, 0.1, 2.4, 8.0]
print(mean_absolute_percentage_error(y_true, y_pred))
在上述代码中,定义了包含零值的真实值y_true
和对应的预测值y_pred
。然后,计算了这些值的MAPE,并打印了结果。由于真实值中存在零值,因此MAPE的值非常大。