R实现PCA降维

作者: 生信编程日常 | 来源:发表于2020-01-08 16:21 被阅读0次

PCA(Principal Component Analysis),即主成分分析方法,是一种使用广泛的数据降维算法。详细的概念可以参照https://zhuanlan.zhihu.com/p/37777074
一般将多个样本降维就可以得到二维的分布,相似的样本成为一群,但有时候我们想知道哪些特征导致了这样的分群。
这里我们主要讨论怎么样用R实现以及提取我们需要的特征:
用R实现PCA有多个方法:
prcomp() and princomp() [built-in R stats package],
PCA() [FactoMineR package],
dudi.pca() [ade4 package],
and epPCA() [ExPosition package]

install.packages(c("FactoMineR", "factoextra"))
library("FactoMineR")
library("factoextra")
#输入的data.frame
data(decathlon2)
head(decathlon2)
image.png

decathlon2是一个27行,13列的data.frame,分析之前需要用scale()函数进行标准化,消除不同量纲之间的差距。在计算PCA的时候也有很多内置的scale参数,如:FactoMineR包里函数PCA(X, scale.unit = TRUE, ncp = 5, graph = TRUE)里面的 scale.unit = TRUE,则进行标准化,或者

library("FactoMineR")
decathlon2.active <- decathlon2[1:23, 1:10]
res.pca <- PCA(decathlon2.active, graph = T)

降维的分群图(这个没有明显的分群)


image.png

作为分群依据的特征值和特征向量


image.png

我们可以通过这些函数提取需要的数据:
get_eigenvalue(res.pca): 提取特征值
fviz_eig(res.pca): 可视化特征值

library("factoextra")
eig.val <- get_eigenvalue(res.pca)
eig.val
image.png

从中我们看到前两个PC可以涵盖59.6%variance,一般用涵盖百分之八十以上的variance就够了,也可以用碎石图展示。

fviz_eig(res.pca, addlabels = TRUE, ylim = c(0, 50))
image.png

cos2cos2 (square cosine, squared coordinates) 能够代表某个PC的代表性的特征值:

var<-get_pca_var(res.pca)
var

image.png
head(var$cos2, 10)
image.png
fviz_pca_var(res.pca, col.var = "cos2",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), 
             repel = TRUE # Avoid text overlapping
             )
image.png

欢迎关注~

公众号二维码的副本.jpg

参考:http://www.sthda.com/english/articles/31-principal-component-methods-in-r-practical-guide/118-principal-component-analysis-in-r-prcomp-vs-princomp/

相关文章

  • R实现PCA降维

    PCA(Principal Component Analysis),即主成分分析方法,是一种使用广泛的数据降维算法...

  • PCA

    PCA降维 一、算法原理 降维算法 还原算法 二、算法实现 三、scikit-learn PCA 四、PCA降噪 ...

  • 拼多多学霸批*两轮技术面+HR面

    PCA降维怎么实现,有哪些降维方法 ResNet densenet inception 都讲述一下原理 逻辑回归的...

  • 【R图千言】主成分分析之3D绘图

    主成分分析 (PCA, principal component analysis)是一种数学降维方法。 PCA降维...

  • PCA应用--二

    参考:PCA降维算法总结以及matlab实现PCA(个人的一点理解) 一、大致流程 PCA的应用范围:数据压缩或者...

  • numpy实现鸢尾花数据集PCA降维

    PCA降维过程 在前面的一篇博客中我已经从数学角度解释了PCA降维的原理,我们从中也可以得到PCA降维的过程1)将...

  • PCA算法实现

    前言 PCA算法是数据降维中最常用的算法之一,利用PCA算法实现的数据降维能够有效减少算法运行时间和算法对硬件的消...

  • PCA降维

    当数据特征较多时,基本有两种方法:1 PCA降维2 Feature Selection(特征选择) PCA降维 <...

  • 使用标准化对数据进行处理

    标准化 PCA降维

  • opencv实现PCA降维

    《learning opencv 》 ex7-3 解决方案 PCA(主成分分析)[https://www.jian...

网友评论

    本文标题:R实现PCA降维

    本文链接:https://www.haomeiwen.com/subject/mvbroctx.html