PCA的可视化分析
来源:7-6 scikit-learn中的PCA

正义叔叔
2019-07-21
虽然PCA主要是起一个降维的作用,但毕竟它算出的特征是原特征的线性组合,那按道理我也应该可以得出原数据的每一维的贡献度吧?老师使用的pca.explained_variance_ratio_,输出的数字是已经排过序的,这样没办法知道到底对应的是哪一个啊。
另外在网上看到这种图,觉得十分带劲
可惜它们是用R语言画的,找了一圈没发现有py的库支持这种图,不知道老师有没有这方面资源呢?
1回答
-
liuyubobobo
2019-07-22
PCA的结果是一组降维后的向量,我们不能获得每一个维度对PCA的整体结果的贡献,因为每一个维度对PCA结果的每一个主成分都有贡献。每个维度可能对这个主成分的贡献多,那个主成分的贡献少。
我们可以获得每一个维度,对每一个主成分的贡献。可以简单地将每个维度和某个主成分的点积,看做是这个维度对这个主成分的贡献。(即每个维度在某一个主成分上的投影,这也正是我们求出主成分的依据。)
你给出的图2,我要没理解错,计算的就是每一个维度,对第一主成分的贡献。
pca.explained_variance_ratio_ 的意思是,每一个主成分,解释原始数据的方差大小。换句话说,是每一个主成分的贡献,而不是原始数据的每一个维度的贡献。
==========
我没有特别深入的研究过Python的可视化包,道理上应该有类似的作图包,但我没有特别接触过。可以搜索类似的帖子找找看:https://mode.com/blog/python-data-visualization-libraries
但整体,Python语言相较R,就是更加低层一些的。组合Python的可视化模块的逻辑,肯定能画出这种图。其实深入研究matplotlib应该就可以。
而R语言本身就是公认的,封装的更好的,适合做数据分析的专门语言,可以参考我的公号文章:https://mp.weixin.qq.com/s?__biz=MzU4NTIxODYwMQ==&mid=2247483930&idx=1&sn=f6ddc7473baa8f1ec49596bd58dd13f2&chksm=fd8cad5ccafb244a9e5b0bc6f909aa451d834dedd0ff95ab89b4749eb76683b647393467ec57&token=455683335&lang=zh_CN#rd
其中最后提到了R语言。
继续加油!:)
10
相似问题