使用更重要的最近观察值计算平均值
Calculating a mean with more recent observations with greater importance
我正在构建一种算法,利用之前比赛的表现来预测体育赛事的结果。例如,我可能有两个如下所示的列表:
# 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)
但是,我希望最近的比赛在均值计算中具有更大的权重。有没有人有这方面的经验?
您可以使用 np.average
进行加权平均
mean_points_scored = np.average(points_scored, weights=game_number)
我认为权重必须在不同的数组中定义:
weights_define = [1, 1, 1, 1, 1, 2, 3]
mean_points_scored = np.average(points_scored, weights=weights_define)
因为 wilkben 定义它的方式不准确而且过于夸张而且根本不是数学!
您可以查看 Excel 解释,其中解释了数学的真正工作原理(代码基本上是数学,别忘了!)--> Excel Debunk
权重的定义可以基于如下某些定义的标准。 x
的因素可能会改变,或者权重列表的部分数量可能会根据要求而变化。假设三个部分 a,b,c
和 15
数据点,(假设 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
我正在构建一种算法,利用之前比赛的表现来预测体育赛事的结果。例如,我可能有两个如下所示的列表:
# 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)
但是,我希望最近的比赛在均值计算中具有更大的权重。有没有人有这方面的经验?
您可以使用 np.average
mean_points_scored = np.average(points_scored, weights=game_number)
我认为权重必须在不同的数组中定义:
weights_define = [1, 1, 1, 1, 1, 2, 3]
mean_points_scored = np.average(points_scored, weights=weights_define)
因为 wilkben 定义它的方式不准确而且过于夸张而且根本不是数学!
您可以查看 Excel 解释,其中解释了数学的真正工作原理(代码基本上是数学,别忘了!)--> Excel Debunk
权重的定义可以基于如下某些定义的标准。 x
的因素可能会改变,或者权重列表的部分数量可能会根据要求而变化。假设三个部分 a,b,c
和 15
数据点,(假设 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