【问题标题】:numpy weighted average for calculating weighted mean squared error用于计算加权均方误差的 numpy 加权平均值
【发布时间】:2018-03-10 17:08:03
【问题描述】:

我正在尝试为我的回归问题计算加权均方误差。我有 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)

由于 tensorflow 加权均方误差和 sklearn 指标均方误差(指定了权重列)之间的不匹配,我来进行测试。请注意,当我不指定权重列时,不会发生这种不匹配。

感谢您的帮助!

【问题讨论】:

    标签: python numpy tensorflow scikit-learn


    【解决方案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)
    

    【讨论】:

      【解决方案2】:

      您的第一个代码段中的加权平均值公式错误,应该是:

      wtd_mse = np.sum(sq_error * y_wts) / np.sum(y_wts)
      

      代替:

      wtd_mse = np.mean(wtd_sq_error)
      

      【讨论】:

        猜你喜欢
        • 2012-04-20
        • 1970-01-01
        • 2021-11-24
        • 1970-01-01
        • 2010-10-04
        • 1970-01-01
        • 1970-01-01
        • 2011-02-12
        • 2020-11-20
        相关资源
        最近更新 更多