【发布时间】:2015-04-09 03:37:14
【问题描述】:
我有一个大小为 (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。当我看到异常高的数字时,我会过滤掉整行。以下直方图显示了我的实际分布情况:
【问题讨论】:
-
Python 3.4 有一个新模块 [statistics][1],它将为您解决问题:[1]:docs.python.org/3/library/statistics.html
标签: python arrays numpy scikit-learn standard-deviation