python - 如何计算一个数字与均值的标准差是多少?

标签 python arrays numpy scikit-learn standard-deviation

我有一个大小为 (61964, 25) 的矩阵。这是一个示例:

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.]])

如果我们的数据是正态分布的,Scikit-learn 提供了一个有用的函数:

from sklearn import preprocessing

X_2 = preprocessing.scale(X[:, :3])

但是,我的问题是我必须按行工作 - 这不仅仅包含 25 个观察值 - 因此正态分布不适用于此处。解决方案是使用 t-distribution,但我如何在 Python 中做到这一点?

通常,值从 0 到 20。当我看到异常高的数字时,我会过滤掉整行。以下直方图显示了我的实际分布情况:

enter image description here

最佳答案

scipy.stats 具有函数 zscore它允许您计算一个值高于平均值的标准偏差数(通常称为标准分数Z分数)。

如果 arr 是您问题中的示例数组,那么您可以计算每行 25 的 Z 分数,如下所示:

>>> import scipy.stats as stats
>>> stats.zscore(arr, axis=1)
array([[-0.18017365, -0.52666143, -0.52666143,  0.8592897 , -0.52666143,
        -0.18017365, -0.52666143, -0.52666143, -0.52666143, -0.52666143,
         0.51280192, -0.52666143,  0.16631414, -0.18017365, -0.52666143,
        -0.52666143,  0.51280192, -0.52666143,  0.51280192, -0.52666143,
         4.32416754, -0.52666143,  0.16631414, -0.52666143,  0.8592897 ],
       [-0.43643578, -0.43643578, -0.43643578,  0.47280543,  1.38204664,
        -0.43643578, -0.43643578, -0.43643578, -0.43643578, -0.43643578,
         0.47280543, -0.43643578,  1.38204664, -0.43643578, -0.43643578,
        -0.43643578, -0.43643578, -0.43643578, -0.43643578, -0.43643578,
         4.10977027, -0.43643578, -0.43643578, -0.43643578,  0.47280543]])

此计算使用每行的总体均值和标准差。要改为使用样本方差(与 t 统计量一样),另外指定 ddof=1:

stats.zscore(arr, axis=1, ddof=1)

关于python - 如何计算一个数字与均值的标准差是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28409064/

相关文章:

python - Numpy:仅获取在某个区间内有值的数组行

python - 如何创建一个在StopIteration之后继续运行的Generator?

c++ - 将类型导出到 python

python - 通过符号链接(symbolic link)启动 python 脚本

ios - 将项目附加到数组会覆盖以前的项目并添加新项目

c - 在 C 中查找指针数组的索引

php - 向对象 PHP 中的数组添加值

python - 20hz-20000hz巴特沃斯滤波爆炸式

python - 在 Python/NumPy 中计算平均值的元素排列

python - 在 Python 类中声明变量在哪里更好?