sklearn.metrics中的平均绝对误差计算

3

我使用手动计算MAE和sklearn.metrics进行计算,为什么结果不同?

from sklearn.metrics import mean_absolute_error as MAE

cnt = 0
error = 0
len_y = len(y)
len_y_pred = len(y_pred)
if len_y == len_y_pred:
      for i in range(len_y):
            if y_pred[i] != y.values[i]:
                  cnt += 1
                  error += abs(y.values[i] - y_pred[i])
      print('manual MAE = ', error / cnt)

# MAE from sklearn
print('sklearn MAE = ', MAE(y, y_pred))

输出:

manual MAE =  96189.48047877151
sklearn MAE =  15074.239113119293

为什么如此不同?

谢谢

1个回答

6

平均绝对误差是指在观测值/预测值长度上的绝对误差总和。即使它们相同,您也不会将n中的观测值排除在外。因此修改您的代码:

from sklearn.metrics import mean_absolute_error as MAE
import pandas as pd

y = pd.DataFrame({'values':[3,6,5,8,9,4,2]})
y_pred = [4,8,7,3,2,4,2]

error = 0
for i in range(len_y):
    error += abs(y.values[i] - y_pred[i])

print('manual MAE = ', error / len(y))
print('sklearn MAE = ', MAE(y, y_pred))

manual MAE =  [2.42857143]
sklearn MAE =  2.4285714285714284

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接