使用更重要的近期观察值计算平均数

3

我正在构建一个算法,利用之前比赛的表现来预测体育比赛结果。例如,我可能有两个看起来像这样的列表:

# 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)

然而,我希望最近的游戏在计算平均值时能够更加重要。有没有人有相关经验?


NumPy加权平均 - Kurtis Streutker
3个回答

4
您可以使用 np.average 进行加权平均。
mean_points_scored = np.average(points_scored, weights=game_number)

3
我认为重量必须在不同的数组中定义:
weights_define = [1, 1, 1, 1, 1, 2, 3]
mean_points_scored = np.average(points_scored, weights=weights_define)  

因为wilkben定义的方式不准确,夸张了很多,根本不是数学!您可以检查一个Excel解释,它解释了数学是如何真正工作的(代码基本上是数学,不要忘记!)-->Excel Debunk

1
定义权重可能基于以下特定标准。权重列表的部分数量或x的因素可能会根据要求而变化。假设有三个部分a,b,c15个数据点,(假设x的因素在权重列表的末尾更大,因为对于“最近的游戏”,需要给予更重的权重)。
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)

Output:

102.77878787878788

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接