如何解决我可以为 PCA 排除一些列吗?
五列数据
一个 |二 |三 |四 |五
但我想要这个结果
pca 1 | PCA 2 |五
是否可以只为 pca 选择 4 列?
解决方法
使用 PCA 减少某些特征在数学上并没有什么不妥之处。 PCA 特征是该子空间的线性组合(旋转轴),其他(正交)特征保持不变。
我在 x,y,z 中包含了一个多元高斯的例子。我在 x
和 y
上使用 PCA,不修改 z
。您可以检查绘图以说服自己第二组点确实与第一组相同,只是在 x,y
中旋转:
import numpy as np
import plotly.express as px
from sklearn.decomposition import PCA
means = [0,0]
cov = [[1,1,0],[-100,100,[0,1]]
# get scatter points drawn from multivariate
x,z = np.random.multivariate_normal(means,cov,5000).T
# data
X = np.array([x,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[:,q[:,1]
px.scatter_3d(x=xp,y=yp,labels={"x":"x'","y":"y'","z":"z"}).show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。