平均绝对百分比误差#

sklearn.metrics.mean_absolute_percentage_error(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average')[源码]#

平均绝对百分比误差 (MAPE) 回归损失。

请注意,我们没有使用常见的“百分比”定义:范围 [0, 100] 内的百分比通过除以 100 转换为范围 [0, 1] 内的相对值。因此,200% 的误差对应于相对误差 2。

用户指南中了解更多信息。

0.24 版本新增。

参数:
y_true形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组

真实(正确)目标值。

y_pred形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组

估计目标值。

sample_weight形状为 (n_samples,) 的类数组,默认值为 None

样本权重。

multioutput{‘raw_values’, ‘uniform_average’} 或类数组

定义多个输出值的聚合方式。类数组值定义用于平均误差的权重。如果输入是列表,则形状必须为 (n_outputs,)。

‘raw_values’

在多输出输入的情况下,返回完整的误差集。

‘uniform_average’

所有输出的误差以均匀权重进行平均。

返回值:
loss浮点数或浮点数 ndarray

如果 multioutput 为 ‘raw_values’,则为每个输出分别返回平均绝对百分比误差。如果 multioutput 为 ‘uniform_average’ 或权重 ndarray,则返回所有输出误差的加权平均值。

MAPE 输出是非负浮点数。最佳值为 0.0。但请注意,糟糕的预测可能导致 MAPE 值任意大,特别是当某些 y_true 值非常接近零时。请注意,当 y_true 为零时,我们返回一个大值而不是 inf

示例

>>> from sklearn.metrics import mean_absolute_percentage_error
>>> y_true = [3, -0.5, 2, 7]
>>> y_pred = [2.5, 0.0, 2, 8]
>>> mean_absolute_percentage_error(y_true, y_pred)
0.3273...
>>> y_true = [[0.5, 1], [-1, 1], [7, -6]]
>>> y_pred = [[0, 2], [-1, 2], [8, -5]]
>>> mean_absolute_percentage_error(y_true, y_pred)
0.5515...
>>> mean_absolute_percentage_error(y_true, y_pred, multioutput=[0.3, 0.7])
0.6198...
>>> # the value when some element of the y_true is zero is arbitrarily high because
>>> # of the division by epsilon
>>> y_true = [1., 0., 2.4, 7.]
>>> y_pred = [1.2, 0.1, 2.4, 8.]
>>> mean_absolute_percentage_error(y_true, y_pred)
112589990684262.48