我使用以下代码:
# Fit PCA
pca = PCA(n_components=3)
pca.fit(data)
# Plot
plt.plot(range(0,3), pca.explained_variance_ratio_)
plt.ylabel('Explained Variance')
plt.xlabel('Principal Components')
plt.title('Explained Variance Ratio')
plt.show()
pca.explained_variance_ratio_
由此我得到以下图形:
和array([0.92540219, 0.06055593, 0.01404188])
我不明白的是为什么它只显示两个主要成分?它应该是92.54%(由第一部分解释的信息),而在图表中它要小于20%吗?请帮我解决这个误会。
答案 0 :(得分:0)
它显示了所有三个组成部分。 pca.explained_variance_ratio_的值在图形中的x轴上分别为0、1和2。 第一个值为(0,0.92540219),第二个值为(1,0.06055593),最后一个值为(2,0.01404188)。
答案 1 :(得分:0)
实际上,如documentation所述,explained_variance_ratio_
返回由每个选定分量解释的方差百分比。因此,它完全符合您的期望,并且您的图形显示了这一点。
这种方式应该更清晰一些:
import matplotlib.pyplot as plt
%matplotlib inline
plt.plot(range(0,3), [0.92540219, 0.06055593, 0.01404188])
plt.ylabel('Explained Variance')
plt.xlabel('Principal Components')
plt.xticks(range(0,3),
["1st comp", "2nd comp", "3rd comp"], rotation=60)
plt.title('Explained Variance Ratio')
plt.show()