mean_absolute_percentage_error#

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

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

请注意这里的输出不是在范围[0, 100]内的百分比,而且值为100并不表示100%,而是1e2。此外,当 y_true 较小时(特定于指标),或者当 abs(y_true - y_pred) 较大时(大多数回归指标常见情况),输出可以任意高。在:ref:用户指南 <mean_absolute_percentage_error> 中了解更多信息。

Added in version 0.24.

Parameters:
y_truearray-like of shape (n_samples,) or (n_samples, n_outputs)

真实值(正确的目标值)。

y_predarray-like of shape (n_samples,) or (n_samples, n_outputs)

估计的目标值。

sample_weightarray-like of shape (n_samples,), default=None

样本权重。

multioutput{‘raw_values’, ‘uniform_average’} or array-like

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

‘raw_values’ :

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

‘uniform_average’ :

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

Returns:
lossfloat or ndarray of floats

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

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

Examples

>>> 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...
>>> # 当 y_true 的某些元素为零时,由于除以 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