我正在尝试为我的回归问题计算加权均方误差。我有y_true、y_predicted和y_wts numpy数组。每个数组的形状为(N,1),其中N是样本数。我不明白为什么下面两段代码给出了不同的答案:
第一个代码段
import numpy as np
sq_error = (y_true-y_predicted)**2
wtd_sq_error = np.multiply(sq_error,y_wts)
wtd_mse = np.mean(wtd_sq_error)
摘自sklearn metrics mean_squared_error function的第二个代码片段
wtd_mse_sklearn = np.average((y_true - y_predicted)**2, axis =0,
weights=y_wts)
我来测试这是因为tensorflow加权均方误差和sklearn指标均方误差(指定了权重列)之间的不匹配。请注意,当我没有指定权重列时,这种不匹配不会发生。
谢谢你的帮忙!
发布于 2017-09-28 20:43:52
因为你忘记了重量:
np.mean = sum(error_i * weight_i ∀ i) / len(error_i ∀ i)
而
np.average = sum(error_i * weight_i ∀ i) / sum(weight_i ∀ i)
发布于 2017-09-28 21:13:22
您的第一个代码段中的加权平均值公式错误,它应该是:
wtd_mse = np.sum(sq_error * y_wts) / np.sum(y_wts)
而不是:
wtd_mse = np.mean(wtd_sq_error)
https://stackoverflow.com/questions/46477897
复制