Может ли кто-нибудь проиллюстрировать базовый подход sklearn.mean_absolute_error для 2 матриц? - PullRequest
1 голос
/ 08 октября 2019

за документ

Функция 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, 7]
>>> 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

что я не могу понять, так это подход к матрицам

>>> y_true = [[0.5, 1], [-1, 1], [7, -6]]
>>> y_pred = [[0, 2], [-1, 2], [8, -5]]
>>> mean_absolute_error(y_true, y_pred)
0.75

Очевидно, что не эта процедура.

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

Может ли кто-нибудь проиллюстрировать основной подход sklearn.mean_absolute_error для 2 матриц?

1 Ответ

1 голос
/ 08 октября 2019

При использовании матриц в качестве входных данных общие потери просто делятся на общее количество элементов. В вашем примере общая потеря составляет 4,5 (0,5 + 1 + 0 + 1 + 1 + 1), и у нас есть шесть элементов (три раза по два), поэтому на выходе абсолютная ошибка равна 4,5 / 6 = 0,75, как и ожидалось.

...