我正在尝试为回归问题计算加权均方误差。我有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指标mean_squared_error function
wtd_mse_sklearn = np.average((y_true - y_predicted)**2, axis =0,
weights=y_wts)
由于张量流加权均方误差和sklearn指标均方误差(指定了权重列)之间的不匹配,我来测试这个。请注意,当我没有指定权重列时,不会发生这种不匹配。
感谢您的帮助!
答案 0 :(得分:1)
因为你忘记了体重:
np.mean = sum(error_i * weight_i ∀ i) / len(error_i ∀ i)
,而
np.average = sum(error_i * weight_i ∀ i) / sum(weight_i ∀ i)
答案 1 :(得分:0)
您的第一个代码段中加权平均值的公式是错误的,应该是:
wtd_mse = np.sum(sq_error * y_wts) / np.sum(y_wts)
而不是:
wtd_mse = np.mean(wtd_sq_error)