在这一步中,聚合器通过Norm Sub[50]处理每个网格中单元的估计频率,这可以使所有估计值为非负,并且总和为1。在Norm-Sub中,首先,将所有负估计值转换为0。然后计算1和正估计之和之间的总差。
接下来,通过将总差除以正估计数来获得平均差。最后,通过减去平均差来更新每个正估计。重复该过程,直到所有估计值变为非负。
if normalization == 0: # No normalisation
return estimates
elif normalization == 1: # Additive normalisation
diff = self.n - sum(estimates[estimates > 0])
non_zero = (estimates>0).sum()
for i,item in enumerate(estimates):
if item > 0:
estimates[i] = item + diff/non_zero
else:
estimates[i] = 0
return estimates