解释PCA解释的方差比

时间:2019-04-14 18:37:12

标签: python-3.x scikit-learn pca

我使用以下代码:

# 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_

由此我得到以下图形:

enter image description here

array([0.92540219, 0.06055593, 0.01404188])

我不明白的是为什么它只显示两个主要成分?它应该是92.54%(由第一部分解释的信息),而在图表中它要小于20%吗?请帮我解决这个误会。

2 个答案:

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

enter image description here