我可以为 PCA 排除某些列吗?
can I except some column for PCA?
五列数据
一个 |两个 |三 |四 |五
但我想要这个结果
PCA 1 |五氯苯甲醚 2 |五
是否有可能 select pca 只有 4 列?
使用 PCA 减少某些特征在数学上并无不妥。 PCA 特征是该子 space 的线性组合(旋转轴),其他(正交)特征保持不变。
我在 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,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()
五列数据
一个 |两个 |三 |四 |五
但我想要这个结果
PCA 1 |五氯苯甲醚 2 |五
是否有可能 select pca 只有 4 列?
使用 PCA 减少某些特征在数学上并无不妥。 PCA 特征是该子 space 的线性组合(旋转轴),其他(正交)特征保持不变。
我在 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,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()