【问题标题】:PCA doesn't reduce the dimensionality of my dataPCA 不会降低我的数据的维数
【发布时间】:2019-01-10 02:59:34
【问题描述】:

我想在 18 维的热图上应用 PCA。

dim(heatmaps)=(224,224,18)

由于 PCA 仅采用 dim

heatmaps=heatmaps.reshape(-1,18)
heatmaps.shape
(50176, 18)

现在,我将应用 PCA 并采用保留 95% 方差的第一个组件。

from sklearn.decomposition import PCA
pca = PCA(n_components=18)
reduced_heatmaps=pca.transform(heatmaps)

但是reduced_heatmaps 的尺寸与原来的heatmaps 相同(50176, 18)。

我的问题如下: 如何在保留 95% 的方差的同时降低热图的维度?

奇怪的事情

pca.explained_variance_ratio_.cumsum()
array([ 0.05744624,  0.11482341,  0.17167621,  0.22837643,  0.284996  ,
        0.34127299,  0.39716828,  0.45296374,  0.50849681,  0.56382308,
        0.61910508,  0.67425335,  0.72897448,  0.78361028,  0.83813329,
        0.89247688,  0.94636864,  1.        ])

这意味着,我需要保留 17 个组件来减少我的数据的维度,这样我就有 18 个维度。

怎么了?

编辑:遵循 Eric Yang 的建议

heatmaps=heatmaps.reshape(18,-1)
heatmaps.shape
(18,50176)

然后应用 PCA 如下:

pca = PCA(n_components=11)
reduced_heatmaps=pca.fit_transform(heatmaps)
pca.explained_variance_ratio_.cumsum()
results the following : 
array([ 0.21121199,  0.33070526,  0.44827572,  0.55748779,  0.64454442,
        0.72588593,  0.7933346 ,  0.85083687,  0.89990991,  0.9306283 ,
        0.9596194 ], dtype=float32)

需要 11 个分量来解释我的数据的 95% 方差。

reduced_heatmaps.shape
(18, 11)

因此我们从 (18,50176) 到 (18, 11)

感谢您的帮助

【问题讨论】:

    标签: python-2.7 scikit-learn heatmap pca


    【解决方案1】:

    降低方差的能力取决于您的数据。如果您有一个每个维度为 N(0,1) 的 N 维高斯,每个维度将解释您的方差的 1/N,因此您通过 PCA 减少维度的能力将是最小的。所以PCA的结果似乎没有错。

    现在基于对您的问题的肤浅理解,您有 18 张 224x224 的图像是否正确?如果这是正确的,那么你的维度是 224x224 而不是 18。所以你想问我的图像中解释我的 18 张图像之间差异的最小像素数是多少。 (但是,如果这不是假设,我可能是错的,而您所拥有的是 18 个通道用于 1 张图像)

    还有另一种可能性,即您有一系列相似的图像(因此您的维度将是 18),并且您正在寻找 Eigen 图像。如果图像差异太大,您将在维度上进行最小程度的降低。

    【讨论】:

    • 嗨@Eric,我肯定在我的图像中寻找最小数量的像素来解释18个图像之间的差异。所以从 (224,224,18) 并想要得到 (X, Y,18) 使得 X
    • 转置你的数据并重新运行你的 PCA,看看你的 95% 的方差是否可以用少于 50176 个维度来解释。你想要 18 行和 50716 列
    • 请查看我的更新并告诉我是否正确
    • 如果您正在寻找解释方差的像素数,那看起来是正确的
    • 我的目的是将输入的维度从 (224 * 224,18) 减少到 (Z,18) 使得 Z
    猜你喜欢
    • 2014-01-02
    • 2015-08-19
    • 2013-12-31
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 2014-11-28
    • 2013-09-30
    相关资源
    最近更新 更多