R语言主成分分析(PCA)葡萄酒可视化:主成分得分散点图和载荷图
首页 专栏 算法 文章详情
0

R语言主成分分析(PCA)葡萄酒可视化:主成分得分散点图和载荷图

拓端tecdat 发布于 5 月 14 日

原文链接:http://tecdat.cn/?p=22492 

===

我们将使用葡萄酒数据集进行主成分分析。

数据

数据包含177个样本和13个变量的数据框;vintages包含类标签。这些数据是对生长在意大利同一地区但来自三个不同栽培品种的葡萄酒进行化学分析的结果:内比奥罗、巴贝拉和格里格诺葡萄。来自内比奥罗葡萄的葡萄酒被称为巴罗洛。

这些数据包含在三种类型的葡萄酒中各自发现的几种成分的数量。

# 看一下数据 head(no)

输出

转换和标准化数据

对数转换和标准化,将所有变量设置在同一尺度上。

# 对数转换 no_log <- log(no) # 标准化 log\_scale <- scale(no\_log) head(log_scale)

主成分分析(PCA)

使用奇异值分解算法进行主成分分析

prcomp(log_scale, center=FALSE) summary(PCA)

基本图形(默认设置)

带有基础图形的主成分得分和载荷图

plot(scores\[,1:2\], # x和y数据      pch=21, # 点形状     cex=1.5, # 点的大小 legend("topright", # legend的位置        legend=levels(vint), # 图例显示 plot(loadings\[,1:2\], # x和y数据      pch=21, # 点的形状 text(loadings\[,1:2\], # 设置标签的位置

此外,我们还可以在分数图中的组别上添加95%的置信度椭圆。

置信度椭圆图函数

## 椭圆曲线图                         elev=0.95, # 椭圆概率水平                         pcol=NULL, # 手工添加颜色,必须满足长度的因素                         cexsize=1, # 点大小                         ppch=21, # 点类型,必须满足因素的长度                         legcexsize=2, # 图例字体大小                         legptsize=2, # 图例点尺寸     ## 设定因子水平     if(is.factor(factr) {         f <- factr     } else {         f <- factor(factr, levels=unique(as.character(factr)))     }     intfactr <- as.integer(f) # 设置与因子水平相匹配的整数向量     ## 获取椭圆的数据     edf <- data.frame(LV1 = x, LV2=y, factr = f) # 用数据和因子创建数据框     ellipses <- dlply(edf, .(factr), function(x) {         Ellipse(LV1, LV2, levels=elev, robust=TRUE, draw=FALSE) #从dataEllipse()函数中按因子水平获取置信度椭圆点     })     ## 获取X和Y数据的范围     xrange <- plotat(range(c(as.vector(sapply(ellipses, function(x) x\[,1\])), min(x), max(x))))     ## 为图块设置颜色     if(is.null(pcol) != TRUE) { # 如果颜色是由用户提供的         pgcol <- paste(pcol, "7e", sep="") # 增加不透明度     # 绘图图形     plot(x,y, type="n", xlab="", ylab="", main=""     abline(h=0, v=0, col="gray", lty=2) #在0添加线条     legpch <- c() # 收集图例数据的矢量     legcol <- c() # 收集图例col数据的向量     ## 添加点、椭圆,并确定图例的颜色     ## 图例     legend(x=legpos, legend=levels(f), pch=legpch,  ## 使用prcomp()函数的PCA输出的轴图示     pcavar <- round((sdev^2)/sum((sdev^2))

基础图形

绘制主成分得分图,使用基本默认值绘制载荷图

plot(scores\[,1\], # X轴的数据             scores\[,2\], # Y轴的数据             vint, # 有类的因素             pcol=c(), # 用于绘图的颜色(必须与因素的数量相匹配)             pbgcol=FALSE, #点的边框是黑色的?             cexsize=1.5, # 点的大小              ppch=c(21:23), # 点的形状(必须与因子的数量相匹配)             legpos="bottom right", # 图例的位置                        legcexsize=1.5, # 图例文字大小             legptsize=1.5, # 图例点的大小              axissize=1.5, # 设置轴的文字大小             linewidth=1.5 # 设置轴线尺寸 )                          title(xlab=explain\[\["PC1"\]\], # PC1上解释的方差百分比       ylab=explain\[\["PC2"\]\], # PC2解释的方差百分比        main="Scores", # 标题       cex.lab=1.5, # 标签文字的大小       cex.main=1.5 # 标题文字的大小 plot(loadings\[,1:2\], # x和y数据      pch=21, # 点的形状      cex=1.5, # 点的大小     # type="n", # 不绘制点数      axes=FALSE, # 不打印坐标轴      xlab="", # 删除x标签      ylab=""              # 删除y标签 ) pointLabel(loadings\[,1:2\], #设置标签的位置            labels=rownames(PCAloadings), # 输出标签            cex=1.5 # 设置标签的大小 ) # pointLabel将尝试将文本放在点的周围 axis(1, # 显示x轴      cex.axis=1.5, # 设置文本的大小      lwd=1.5 # 设置轴线的大小 ) axis(2, # 显示y轴      las=2, # 参数设置文本的方向,2是垂直的      cex.axis=1.5, # 设置文本的大小      lwd=1.5 # 设置轴线的大小 ) title(xlab=explain\[\["PC1"\]\], # PC1所解释的方差百分比       ylab=explain\[\["PC2"\]\], # PC2解释的方差百分比             cex.lab=1.5, # 标签文字的大小       cex.main=1.5 # 标题文字的大小 )

最受欢迎的见解

1.matlab偏最小二乘回归(PLSR)和主成分回归(PCR)

2.R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析

3.主成分分析(PCA)基本原理及分析实例

4.基于R语言实现LASSO回归分析

5.使用LASSO回归预测股票收益数据分析

6.r语言中对lasso回归,ridge岭回归和elastic-net模型

7.r语言中的偏最小二乘回归pls-da数据分析

8.r语言中的偏最小二乘pls回归算法

9.R语言线性判别分析(LDA),二次判别分析(QDA)和正则判别分析(RDA)

算法 机器学习 人工智能 深度学习 数据挖掘
阅读 21 更新于 5 月 14 日
收藏
分享
本作品系原创, 采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议
拓端数据
拓端tecdat分享最in的大数据资讯,提供“一站式”的数据分析学习和咨询体验,让我们一起做有态度的数据人...
关注专栏
avatar
拓端tecdat

拓端(http://tecdat.cn )创立于2016年,自成立以来,就定位为提供专业的数据分析与数据挖掘服务的提供商,致力于充分挖掘数据的价值,为客户定制个性化的数据解决方案与行业报告等。

169 声望
27 粉丝
关注作者
0 条评论
得票数 最新
提交评论
你知道吗?

注册登录
avatar
拓端tecdat

拓端(http://tecdat.cn )创立于2016年,自成立以来,就定位为提供专业的数据分析与数据挖掘服务的提供商,致力于充分挖掘数据的价值,为客户定制个性化的数据解决方案与行业报告等。

169 声望
27 粉丝
关注作者
宣传栏
目录

原文链接:http://tecdat.cn/?p=22492 

===

我们将使用葡萄酒数据集进行主成分分析。

数据

数据包含177个样本和13个变量的数据框;vintages包含类标签。这些数据是对生长在意大利同一地区但来自三个不同栽培品种的葡萄酒进行化学分析的结果:内比奥罗、巴贝拉和格里格诺葡萄。来自内比奥罗葡萄的葡萄酒被称为巴罗洛。

这些数据包含在三种类型的葡萄酒中各自发现的几种成分的数量。

# 看一下数据 head(no)

输出

转换和标准化数据

对数转换和标准化,将所有变量设置在同一尺度上。

# 对数转换 no_log <- log(no) # 标准化 log\_scale <- scale(no\_log) head(log_scale)

主成分分析(PCA)

使用奇异值分解算法进行主成分分析

prcomp(log_scale, center=FALSE) summary(PCA)

基本图形(默认设置)

带有基础图形的主成分得分和载荷图

plot(scores\[,1:2\], # x和y数据      pch=21, # 点形状     cex=1.5, # 点的大小 legend("topright", # legend的位置        legend=levels(vint), # 图例显示 plot(loadings\[,1:2\], # x和y数据      pch=21, # 点的形状 text(loadings\[,1:2\], # 设置标签的位置

此外,我们还可以在分数图中的组别上添加95%的置信度椭圆。

置信度椭圆图函数

## 椭圆曲线图                         elev=0.95, # 椭圆概率水平                         pcol=NULL, # 手工添加颜色,必须满足长度的因素                         cexsize=1, # 点大小                         ppch=21, # 点类型,必须满足因素的长度                         legcexsize=2, # 图例字体大小                         legptsize=2, # 图例点尺寸     ## 设定因子水平     if(is.factor(factr) {         f <- factr     } else {         f <- factor(factr, levels=unique(as.character(factr)))     }     intfactr <- as.integer(f) # 设置与因子水平相匹配的整数向量     ## 获取椭圆的数据     edf <- data.frame(LV1 = x, LV2=y, factr = f) # 用数据和因子创建数据框     ellipses <- dlply(edf, .(factr), function(x) {         Ellipse(LV1, LV2, levels=elev, robust=TRUE, draw=FALSE) #从dataEllipse()函数中按因子水平获取置信度椭圆点     })     ## 获取X和Y数据的范围     xrange <- plotat(range(c(as.vector(sapply(ellipses, function(x) x\[,1\])), min(x), max(x))))     ## 为图块设置颜色     if(is.null(pcol) != TRUE) { # 如果颜色是由用户提供的         pgcol <- paste(pcol, "7e", sep="") # 增加不透明度     # 绘图图形     plot(x,y, type="n", xlab="", ylab="", main=""     abline(h=0, v=0, col="gray", lty=2) #在0添加线条     legpch <- c() # 收集图例数据的矢量     legcol <- c() # 收集图例col数据的向量     ## 添加点、椭圆,并确定图例的颜色     ## 图例     legend(x=legpos, legend=levels(f), pch=legpch,  ## 使用prcomp()函数的PCA输出的轴图示     pcavar <- round((sdev^2)/sum((sdev^2))

基础图形

绘制主成分得分图,使用基本默认值绘制载荷图

plot(scores\[,1\], # X轴的数据             scores\[,2\], # Y轴的数据             vint, # 有类的因素             pcol=c(), # 用于绘图的颜色(必须与因素的数量相匹配)             pbgcol=FALSE, #点的边框是黑色的?             cexsize=1.5, # 点的大小              ppch=c(21:23), # 点的形状(必须与因子的数量相匹配)             legpos="bottom right", # 图例的位置                        legcexsize=1.5, # 图例文字大小             legptsize=1.5, # 图例点的大小              axissize=1.5, # 设置轴的文字大小             linewidth=1.5 # 设置轴线尺寸 )                          title(xlab=explain\[\["PC1"\]\], # PC1上解释的方差百分比       ylab=explain\[\["PC2"\]\], # PC2解释的方差百分比        main="Scores", # 标题       cex.lab=1.5, # 标签文字的大小       cex.main=1.5 # 标题文字的大小 plot(loadings\[,1:2\], # x和y数据      pch=21, # 点的形状      cex=1.5, # 点的大小     # type="n", # 不绘制点数      axes=FALSE, # 不打印坐标轴      xlab="", # 删除x标签      ylab=""              # 删除y标签 ) pointLabel(loadings\[,1:2\], #设置标签的位置            labels=rownames(PCAloadings), # 输出标签            cex=1.5 # 设置标签的大小 ) # pointLabel将尝试将文本放在点的周围 axis(1, # 显示x轴      cex.axis=1.5, # 设置文本的大小      lwd=1.5 # 设置轴线的大小 ) axis(2, # 显示y轴      las=2, # 参数设置文本的方向,2是垂直的      cex.axis=1.5, # 设置文本的大小      lwd=1.5 # 设置轴线的大小 ) title(xlab=explain\[\["PC1"\]\], # PC1所解释的方差百分比       ylab=explain\[\["PC2"\]\], # PC2解释的方差百分比             cex.lab=1.5, # 标签文字的大小       cex.main=1.5 # 标题文字的大小 )

最受欢迎的见解

1.matlab偏最小二乘回归(PLSR)和主成分回归(PCR)

2.R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析

3.主成分分析(PCA)基本原理及分析实例

4.基于R语言实现LASSO回归分析

5.使用LASSO回归预测股票收益数据分析

6.r语言中对lasso回归,ridge岭回归和elastic-net模型

7.r语言中的偏最小二乘回归pls-da数据分析

8.r语言中的偏最小二乘pls回归算法

9.R语言线性判别分析(LDA),二次判别分析(QDA)和正则判别分析(RDA)