首页 > 解决方案 > 解释sklearn.metrics.mean_absolute_error中`multioutput=[0.3, 0.7]`的底层处理

问题描述

基于文档

mean_absolute_error 函数计算平均绝对误差,这是一个风险度量,对应于绝对误差损失或 L1 范数损失的预期值。

我了解 2 个“向量”的过程

>>> from sklearn.metrics import mean_absolute_error
>>> y_true = [3, -0.5, 2, 7]
>>> y_pred = [2.5, 0.0, 2, 8]
>>> mean_absolute_error(y_true, y_pred)

也就是将每个向量中所有对等元素之间的绝对差相加,然后除以向量的长度。

此代码正是 sklearn.mean_absolute_error 对 2 个“向量”的基础处理

res = 0
for t,p in zip(y_true, y_pred):
    res = res + np.abs(t-p)
res/4

我无法理解的是这个处理

>>> mean_absolute_error(y_true, y_pred, multioutput=[0.3, 0.7])
0.85

有人可以说明multioutput=[0.3, 0.7]零件的基本处理吗?

标签: pythonscikit-learn

解决方案


在同一个文档页面上对其进行了更高的解释。

如果你想明确地看到它的作用,你可以在源代码中看到它:mean_absolute_error()通过调用权重等于的 numpyaverage()multioutput函数结束。

因此multioutput,这只是一种说明mean_absolute_error(),在计算平均误差时,某些数量上的误差应该比其他数量更多地计入该平均值。


推荐阅读