主页 > 体育

画图专题-PCA主成分分析

时间:2019-10-09 来源:果妈的小确幸


原理简单介绍


PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。


更多详细的理解,可以参考以下网页内容,讲得非常深刻(需要有线性代数基础)。如果你只想知道怎么画图,请直接跳过接着往下看实际操作部分。


PCA的数学原理 

http://blog.codinglabs.org/articles/pca-tutorial.html

主成分分析(Principal components analysis)-最大方差解释

http://www.cnblogs.com/jerrylead/archive/2011/04/18/2020209.html

 

软件安装


此次我们使用 ggbiplot这个包。

R包安装


#package ggbiplot
install.packages("devtools", repos="http://mirror.lzu.edu.cn/CRAN/") #指定镜像
library(devtools)
install_github("vqv/ggbiplot",force=T)
library(ggbiplot)

左右滑动查看完整内容


如果有报错:可以参考

https://tieba.baidu.com/p/4958574519?red_tag=1463637857

https://stackoverflow.com/questions/42115972/configuration-failed-because-libcurl-was-not-found


额,出现其他错误可以自行百度或者谷歌或者后台留言让热爱学习的小编给你解答。


实例操作


#加载数据
data(wine)

左右滑动查看完整内容


这个数据是R中自带的数据,总共有178行,13列。可以理解为178个样本,13个特征向量(即每一列代表一个特征,在这里每一列代表一种酒的成份)。我们现在想对这13个特征进行降维处理,希望以更少的综合特征(如用第一主成份和第二主成份这两个综合特征)来表示这178个样本特征。



#用prcomp函数进行PCA分析,需要对数据进行scale即均一化。
wine.pca <- prcomp(wine, scale. = TRUE)
summary(wine.pca)

左右滑动查看完整内容




Proportion of Variance就是各个主成分的方差占所有方差的比值,即对应的贡献率。而Cumulative Proportion则对应的百分比累积值。


#基本图
ggbiplot(wine.pca,groups=wine.class,var.axes=F)
#wine.class为酒的种类,分别有barolo(巴罗罗葡萄酒),grignolino(格丽尼奥里诺葡萄酒)和barbera(巴贝拉葡萄酒)

左右滑动查看完整内容


#横坐标为第一主成分,纵坐标为第二主成分,方差占所有方差的比值分别为36.2%,19.2%


#用样本名代替点画图,并调整名称的大小,参数labels以及labels.size
ggbiplot(wine.pca,groups=wine.class,var.axes=F,labels=rownames(wine),labels.size=3)

左右滑动查看完整内容




#对每组添加椭圆,可以设置ellipse为T
ggbiplot(wine.pca,groups=wine.class,var.axes=F,ellipse=T)

左右滑动查看完整内容



#还可以展示每个特征向量,参数var.axes设置为T
ggbiplot(wine.pca,groups=wine.class,var.axes=T,ellipse=T)

左右滑动查看完整内容




下面是ggbiplot函数参数的详细讲解:

 

ggbiplot(pcobj, choices = 1:2, scale = 1, pc.biplot =
TRUE, obs.scale = 1 - scale, var.scale = scale, groups =
NULL, ellipse = FALSE, ellipse.prob = 0.68, labels =
NULL, labels.size = 3, alpha = 1, var.axes = TRUE, circle
= FALSE, circle.prob = 0.69, varname.size = 3,
varname.adjust = 1.5, varname.abbrev = FALSE, ...)

左右滑动查看完整内容


pcobj

prcomp()或princomp()返回结果

choices

选择轴,默认1:2

scale

covariance biplot (scale = 1), form biplot (scale = 0).

When scale = 1, the inner product between the variables approximates the covariance and the distance between the points approximates the Mahalanobis distance

obs.scale

标准化观测值

var.scale

标准化变异

pc.biplo

兼容 biplot.princomp()

groups

样本分类信息,并按类上色

ellipse

添加组椭圆

 

ellipse.prob

置信区间

labels

向量名称

labels.size

名称大小

alpha

点透明度 (0 = TRUEransparent, 1 = opaque)

circle

绘制相关环(only applies when prcomp was called with scale = TRUE and when var.scale = 1)

var.axes

绘制变量线

varname.size

变量名大小

varname.adjust

标签与箭头距离 >= 1 means farther from the arrow

varname.abbrev

标签是否缩写


好啦,今天的PCA绘图就到这里啦,下次小编再教你绘制三维的PCA分析结果。