python - sklearn.metrics mean_absolute_error 计算
问题描述
我使用手动 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
为什么如此不同?
谢谢
解决方案
平均绝对误差是观察/预测长度上的绝对误差之和。即使它们碰巧相同,您也不会从 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
推荐阅读
- php - php tree 获取子节点所有父节点的列表
- angular - Angular slickgrid 列删除排序选项无法正常工作
- android - 数据绑定监听器
- c# - Xamarin.Forms StackLayout 与 x:Name 在 DataTemplate 中时找不到
- c++ - 具有 2 个分量数组的特征映射到 3 个向量
- r - #R #二元运算符的非数字参数 #xts 对象 * 整数
- python-3.x - 在标签形状和 logits 之间出现形状不匹配错误?
- swift - 如何将 IBOutlet 添加到嵌入式 TableView 中的类
- c++ - alignof 和 alignas C++ 关键字的实际用例
- c# - Linq how to union array of objects inside list and group by value