【问题标题】:Calculating a mean with more recent observations with greater importance用更重要的最近观测值计算平均值
【发布时间】:2019-12-27 01:34:40
【问题描述】:

我正在构建一种算法,以使用之前比赛的表现来预测体育赛事的结果。例如,我可能有两个如下所示的列表:

# list of game numbers
game_number = [1, 2, 3, 4, 5, 6, 7] 

# list of points scored   
points_scored = [100, 106, 99, 106, 89, 94, 113]

我可以使用以下方法轻松计算平均值:

# calculate mean
mean_points_scored = np.mean(points_scored)

但是,我希望在计算平均值时对最近的游戏进行更重的加权。有人有这方面的经验吗?

【问题讨论】:

标签: python numpy weighted-average


【解决方案1】:

您可以使用np.average 进行加权平均

mean_points_scored = np.average(points_scored, weights=game_number)

【讨论】:

    【解决方案2】:

    我认为重量必须在不同的数组中定义:

    weights_define = [1, 1, 1, 1, 1, 2, 3]
    mean_points_scored = np.average(points_scored, weights=weights_define)  
    

    因为 wilkben 定义它的方式不准确,过于夸张,根本不是数学!

    您可以查看 Excel 说明,该说明解释了数学的实际工作原理(代码基本上是数学,不要忘记!)--> Excel Debunk

    【讨论】:

      【解决方案3】:

      权重的定义可以基于某些定义的标准,如下所示。 x 的因素可能会有所变化,或者权重列表的份数可能会根据要求而有所不同。假设a,b,c15 三个部分数据点,(假设x 的因子在权重列表的末尾部分更大,因为它为recent games 给出了更多的权重)

      a = [(3*x) for x in range(1,6)]
      b = [(4*x) for x in range(6,11)]
      c = [(7*x) for x in range(11,16)]
      
      weights_define = a+b+c
      
      game_number = [1, 2, 3, 4, 5, 6, 7,8,9,10,11,12,13,14,15]
      points_scored = [100, 106, 99, 106, 89, 94, 113, 112,109,111,97,95,102,107,103]
      
       mean_points_scored = np.average(points_scored, weights=weights_define)  
       print(mean_points_scored)
      

      输出:

      102.77878787878788
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-20
        • 1970-01-01
        • 1970-01-01
        • 2023-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多