我有一个2d数组,每行包含25个整数,其中有很多0,因此分布总是正确的。
最终,我想要做的是计算每行的z分数,然后执行映射(即根据其值为每个z分数分配一个属性):
if x < -2:
return 'VERY_LOW'
elif x < -1:
return 'LOW'
elif x < +1:
return 'AVERAGE'
elif x < +2:
return 'HIGH'
else:
return 'VERY_HIGH'
然而,我的问题是,z分数仍然在某种程度上是正确的,因此我永远不会得到LOW或VERY_LOW标签。
所以,我想知道这有什么问题,例如我在提供的界限或整个想法中犯了一个错误,或者我只需要做一些额外的事情(例如记录日志)。
非常感谢任何帮助。
修改
这是我的数据样本:
array([[ 1., 0., 0., 4., 0., 1., 0., 0., 0., 0., 3.,
0., 2., 1., 0., 0., 3., 0., 3., 0., 14., 0.,
2., 0., 4.],
[ 0., 0., 0., 1., 2., 0., 0., 0., 0., 0., 1.,
0., 2., 0., 0., 0., 0., 0., 0., 0., 5., 0.,
0., 0., 1.],
[ 1., 1., 0., 4., 0., 1., 0., 1., 0., 0., 2.,
0., 1., 1., 1., 0., 3., 0., 3., 0., 5., 0.,
2., 0., 2.]])
这是我计算z分数的方法:
z_scores = st.mstats.zscore(data, axis=1, ddof=1)