python - 保留 PCA 中的特定组件

标签 python python-2.7 numpy scikit-learn pca

我有一个名为“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/

相关文章:

python - 关于django线程安全的问题

python - 如果 df1 索引在 df2 索引中,Pandas 更新列值

python - 是否可以为 native 数据类型重载运算符?

python - 在requirements.txt 文件中使用 "-t"选项

python - 字典的大小(以字节为单位)

python - 从文本文件中提取特定数据

python - Numpy 数组减法 : inconsistent values for large arrays

c# - 在 Python 中模拟 C# 的 sbyte(8 位有符号整数)转换

python - 如何将这个循环推到 numpy 中?

python-3.x - Python 3.6 numpy reshape 可以工作,但值包含 e