用更重要的最新观察结果计算平均值

时间:2019-08-21 18:21:40

标签: python numpy weighted-average

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

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

但是,我希望在平均数的计算中对较新的游戏进行加权。有人有这样做的经验吗?

3 个答案:

答案 0 :(得分:3)

您可以使用np.average

进行加权平均
LazyInitializationException

答案 1 :(得分:2)

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

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

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

您可以查看Excel解释,它解释了数学的真正工作原理(代码基本上是数学,请不要忘记!)-> Excel Debunk

答案 2 :(得分:1)

权重的定义可以基于以下某些定义的标准。 x的因数可能会更改,或者权重列表的份数可能会根据要求而有所不同。假设a,b,c15这三个数据点,{{1}的因子被认为在权重列表的末端部分较大,因为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)