我有一个名为“data”的 numpy 数组,它有 500 行和 500 列。使用 sklearn 中的 PCA,我可以将其压缩为 500 行和 15 列。我相信本质上我从 500 个轴和 500 个点变成了 15 个轴和 500 个点。这些轴都是正交的,可以很好地解释我的数据。
但我想知道是否有办法确保 15 个轴中的一个(我在运行 PCA 后得到的)也是原始 500 个中的一个。也就是说,我可以保留原始轴之一并使用 PCA (或其他方法)找到剩余的 14 个?
我的代码如下:
from sklearn.decomposition import PCA
#data is some 500x500 numpy array
pca = PCA(n_components = 15)
pca_result = pca.fit_transform(data)
#pca_result is a 500x15 numpy array
最佳答案
您可以简单地从数据中删除您想要保留的轴:
mask = np.ones(data.shape[1], dtype=np.bool)
mask[special_axis] = False
data_new = data[:, mask]
pca_transformed = PCA(n_components=14).fit_transform(data_new)
这与移除沿此要素的投影相同。 然后,您可以根据需要将原始轴与 PCA 结果叠加:
stacked_result = np.hstack([pca_transformed, data[:, [special_axis]]])
关于python - 保留 PCA 中的特定组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30960716/