PCA缩减的数据集未显示与原始数据集相同的值

问题描述

我正在7维数据集上运行PCA。从PCA中,我推断出理想的尺寸数是3,因为它可以捕捉到我的89%的方差(对于我的目的而言足够准确)。

此后,我使用pca.fit_transform获取我的降维数据集。当我打印尺寸缩小的数据集时,看不到原始值(这是我期望的)。我看到了一个数据集,尺寸减小了,但列和行中的值却完全不同(请参见下文)

#ORIGINAL DATASET
        height  length  width   std     min     max     kurtosis
    0   15.26   14.84   0.8710  5.763   3.312   2.221   5.220
    1   14.88   14.57   0.8811  5.554   3.333   1.018   4.956
    2   14.29   14.09   0.9050  5.291   3.337   2.699   4.825
    3   13.84   13.94   0.8955  5.324   3.379   2.259   4.805
    4   16.14   14.99   0.9034  5.658   3.562   1.355   5.175
    ...     ...     ...     ...     ...     ...     ...     ...
    205     12.19   13.20   0.8783  5.137   2.981   3.631   4.870
    206     11.23   12.88   0.8511  5.140   2.795   4.325   5.003
    207     13.20   13.66   0.8883  5.236   3.232   8.315   5.056
    208     11.84   13.21   0.8521  5.175   2.836   3.598   5.044
    209     12.30   13.34   0.8684  5.243   2.974   5.637   5.063

#PCA REDUCED DATASET
       0            1           2
0   0.317047    0.783669    -0.631010
1   -0.003386   1.913214    -0.669754
2   -0.459443   1.907225    0.932489
3   -0.591936   1.931069    0.499311
4   1.102910    2.068090    0.056705
...     ...     ...     ...
205     -1.991107   0.865956    0.513303
206     -2.726865   -0.208190   -0.059059
207     -1.403633   -1.298593   2.905811
208     -2.339328   0.099699    -0.382515
209     -1.955953   -0.525071   1.013113

为什么第二个数据集没有显示与原始数据集相同的值,而只是缩小了尺寸?我觉得我可能误会了一些简单的东西。

关于它的价值,这是我使用的代码

#STEP 1: normalise the data
from sklearn.preprocessing import scale #required for normalising data set
Xnorm = scale(data_features_pt2)

#STEP 2: perform PCA using sklearn PCA implementation
from sklearn.decomposition import PCA
pca = PCA(n_components = 7)
pca.fit(Xnorm)

#STEP 3: preparing dimensionality reduced dataset
pca = PCA(n_components = 3)
Zred_3 = pca.fit_transform(Xnorm)
print(Zred_3.shape)

非常感谢您的帮助。

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)