如何计算许多右倾分布的z分数?

时间:2015-02-16 09:33:44

标签: python numpy scipy

我有一个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)

0 个答案:

没有答案