矩阵的归一化

Normalization of a matrix

我有一个 150x4 矩阵 X,它是我使用以下代码从 pandas 数据帧创建的:

X = df_new.as_matrix()

我必须使用此函数对其进行规范化:

我知道Ujj的均值,σ jj的标准差,但我不明白j 是。我在理解 X 上的横线是什么时遇到了一些困难,而且我对等式中的逗号感到困惑(我不知道它们是否有任何意义)。

任何人都可以帮助我理解这个等式的含义,以便我可以使用 sklearn 编写归一化吗?

矩阵 X 的索引是行 (i) 和列 (j)。因此,X,j 表示矩阵 X 的列 j。 IE。将矩阵 X 的每一列归一化为 z-scores.

您可以使用 pandas:

df_new_zscores = (df_new - df_new.mean()) / df_new.std()

您实际上不需要自己编写规范化代码 - 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.])

我不知道 pandas 但我认为方程意味着归一化矩阵由下式给出 您减去经验平均值并除以每列的经验标准差。

您有时将其用于主成分分析。