我有一个150x4矩阵X
,我是使用以下代码从pandas数据框创建的:
X = df_new.as_matrix()
我必须使用此函数对其进行规范化:
我知道Uj
是j
的平均值,而σ j
是j
的标准差,但我不明白{{1}是的。我在理解j
上的条形图时遇到了一些麻烦,我对等式中的逗号感到困惑(我不知道它们是否有任何意义)。
任何人都可以帮助我理解这个等式的含义,然后我可以使用sklearn编写规范化吗?
答案 0 :(得分:1)
矩阵X的索引是行(i)和列(j)。因此,X,j
表示矩阵j
的列X
。即将矩阵X的每列标准化为z-scores。
你可以使用熊猫来做到这一点:
df_new_zscores = (df_new - df_new.mean()) / df_new.std()
答案 1 :(得分:1)
您实际上并不需要自己为规范化编写代码 - 它已准备好sklearn.preprocessing.scale
。
以下是from the docs示例:
>>> from sklearn import preprocessing
>>> import numpy as np
>>> X_train = np.array([[ 1., -1., 2.],
... [ 2., 0., 0.],
... [ 0., 1., -1.]])
>>> X_scaled = preprocessing.scale(X_train)
>>> X_scaled
array([[ 0. ..., -1.22..., 1.33...],
[ 1.22..., 0. ..., -0.26...],
[-1.22..., 1.22..., -1.06...]])
当与默认设置axis=0
一起使用时,正规化按列进行(即对于每个列j
,如在您的等式中)。因此,很容易确认缩放数据的均值和单位方差为零:
>>> X_scaled.mean(axis=0)
array([ 0., 0., 0.])
>>> X_scaled.std(axis=0)
array([ 1., 1., 1.])
答案 2 :(得分:1)