PCA解释方差比的解释

Interpretation of PCA explained variance ratio

我使用以下代码:

# 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%?请帮我解决这个误会。

它显示了所有三个组件。 pca.explained_variance_ratio_ 的值绘制在图表中 x 轴上的 0、1 和 2 处。 第一个值在 (0, 0.92540219),第二个在 (1, 0.06055593),最后一个在 (2, 0.01404188)。

事实上,正如 documentation 所述,explained_variance_ratio_ returns 每个所选成分解释的方差百分比。所以,它完全符合您的预期,并且您的图表显示了这一点。

这样写应该更清楚一点:

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()