【问题标题】:can I except some column for PCA?我可以为 PCA 排除一些列吗?
【发布时间】:2020-12-26 04:52:33
【问题描述】:

五列数据

一个 |二 |三 |四 |五

但我想要这个结果

pca 1 | pca 2 |五

是否可以只为 pca 选择 4 列?

【问题讨论】:

  • 当然 - 在前四个组件上运行 PCA,然后连接第五个功能

标签: machine-learning pca


【解决方案1】:

使用 PCA 减少某些功能在数学上没有任何不妥之处。 PCA 特征是该子空间的线性组合(旋转轴),其他(正交)特征保持不变。

我在 x,y,z 中包含了一个多元高斯的示例。我在xy 上使用PCA,而z 未修改。您可以检查这些图以说服自己第二组点确实与第一组相同,只是在x,y 中旋转:

import numpy as np
import plotly.express as px
from sklearn.decomposition import PCA

means = [0,0,0]
cov = [[1,1,0],[-100,100,0],[0,0,1]]

# get scatter points drawn from multivariate
x,y,z = np.random.multivariate_normal(means, cov, 5000).T

# data
X = np.array([x,y,z]).T

# initial plot, with largest variance along x=y:
px.scatter_3d(x=x, y=y, z=z, labels={j:j for j in"xyz"}).show()

# fit pca in the x-y plane, leaving z un-modified
pca = PCA(n_components=2)
pca.fit(X[:, 0:2])

# get "rotated" pca components x', y'
q = pca.transform(X[:,0:2])
xp, yp = q[:,0], q[:,1]

px.scatter_3d(x=xp, y=yp, z=z, labels={"x":"x'", "y":"y'", "z":"z"}).show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-16
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 2023-04-10
    相关资源
    最近更新 更多