scikit-learn标准缩放器 - 获取GMM原始未缩放空间的标准偏差

时间:2014-04-11 06:47:44

标签: scikit-learn

在运行GMM群集模型之前,我使用标准Scaler将我的数据转换为0均值的第1个数据集

然后进行了聚类,我有兴趣将学习的聚类表示回原始空间而不是0均值,1标准差,其中特征值更有意义。

然后执行以下操作是否正确:

  1. 通过乘以每个GMM群集的平均值得到均值 scaler.mean_ parameters。

  2. 通过乘以平方来获得标准差 scaler.std_参数的对角协方差矩阵。

  3. 我很感激任何反馈,

    谢谢!

1 个答案:

答案 0 :(得分:3)

对于群集中心,您可以直接使用scaler.inverse_transform()(因为它们与您的数据位于同一空间)。它将列装置添加回来,并按标准偏差对每列进行缩放。

import numpy as np
from sklearn.preprocessing import StandardScaler
X = np.random.randn(10, 3)
scaler = StandardScaler()
scaler.fit(X)

然后你会看到

scaler.inverse_transform(scaler.transform(X)) - X

等于或非常接近0,使两者基本相等。为了使管道自动化,您还应该查看sklearn.pipeline.Pipeline,您可以使用它来连接流程并调用transforminverse_transform方法。

对于协方差的重新缩放,您应该将np.diag(scaler.std_)乘以群集协方差矩阵的右侧和左侧。

回答你的问题:

1)通过乘以集群意味着获得均值,并通过scaler.std_和添加 scaler.mean_返回。 2)通过左右乘以np.diag(scaler.std_),即rescaled_cov = np.diag(scaler.std_).dot(cov).dot(np.diag(scaler.std_))

重新缩放聚类协方差

注意:如果您的协方差矩阵相当大,您可能不希望创建相同大小的另一个(对角线但密集的)矩阵。操作scaler.std_[:, np.newaxis] * cov * scaler.std_在数学上等同于2)但不需要创建对角矩阵。