如何解决为什么我需要在主成分分析中指明要保留的成分数量?
我发现要使用 pca 必须在开始时指明要保留的组件数量,例如在下一个代码中:
# Initialize
model = pca(n_components=3,normalize=True)
是否有任何仅表示方差并让算法给我最重要的组件的方法?
解决方法
您不一定需要提前指定组件的数量。您可以提取所有分量并仅保留解释累积方差的给定部分的分量。请参阅下面的代码以获取示例。
import numpy as np
from sklearn.decomposition import PCA
from sklearn.datasets import make_spd_matrix
from sklearn.preprocessing import StandardScaler
# generate the data
np.random.seed(100)
N = 1000 # number of samples
K = 10 # number of features
mean = np.zeros(K)
cov = make_spd_matrix(K)
X = np.random.multivariate_normal(mean,cov,N)
print(X.shape)
# (1000,10)
# rescale the data
scaler = StandardScaler()
X = scaler.fit_transform(X)
# perform the PCA
pca = PCA(n_components=None)
pca.fit(X)
# extract the smallest number of components which
# explain at least p% (e.g. 80%) of the variance
p = 0.80
n_components = 1 + np.argmax(np.cumsum(pca.explained_variance_ratio_) >= p)
print(n_components)
# 6
# extract the values of the selected components
Z = pca.transform(X)[:,:n_components]
print(Z.shape)
# (1000,6)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。