1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 主成分分析PCA降维方法和R语言分析葡萄酒可视化实例|数据分享

主成分分析PCA降维方法和R语言分析葡萄酒可视化实例|数据分享

时间:2020-02-29 20:17:43

相关推荐

主成分分析PCA降维方法和R语言分析葡萄酒可视化实例|数据分享

最近我们被客户要求撰写关于主成分分析PCA的研究报告,包括一些图形和统计输出。降维技术之一是主成分分析 (PCA) 算法,该算法将可能相关变量的一组观察值转换为一组线性不相关变量。在本文中,我们将讨论如何通过使用 R编程语言使用主成分分析来减少数据维度分析葡萄酒数据。

主成分分析PCA降维方法和R语言分析葡萄酒可视化实例

主成分分析PCA降维方法和R语言分析葡萄酒可视化实例

,时长04:30

高维数据集的处理可能是一个复杂的问题,因为我们需要更高的计算资源,或者难以控制机器学习模型的过度拟合等。为避免此类问题,您可以降低数据集的维数。降维将数据从高维空间转移到低维空间,使数据的低维表示只保留原始数据的重要方面。

这是将三维数据集转换为三个二维数据集的可视化:该图说明了一个三维特征空间被分成三个二维特征空间,之后,如果发现相关,特征的数量可以进一步减少。

主成分分析(PCA)

主成分分析(PCA)是最流行的线性降维算法之一。它是一种基于投影的方法,通过将数据投影到一组正交(垂直)轴上来转换数据。

“PCA 的工作条件是,当高维空间中的数据映射到低维空间中的数据时,低维空间中数据的方差或散布应该最大。”

假设我们必须将数据点的二维表示转换为一维表示。因此,我们将尝试在它们上找到一条直线并投影数据点。(直线是一维的)。选择直线的可能性有很多。

假设蓝色线将是我们的新维度。如果你看到蓝线(连接红点在蓝线上的投影),即每个数据点与直线的垂直距离就是投影误差。所有数据点的误差之和将是总投影误差。

我们的新数据点将是那些原始蓝色数据点的投影(红色点)。正如我们所看到的,我们通过将二维数据点投影到一维空间(即直线)上,将它们转换为一维数据点。

您从本质上将数据的维度从二维减少到一维。一维空间(也就是直线)是二维坐标系的子空间。

蓝线是使用数学优化构建的,以尽可能地沿该线最大化数据点之间的方差,数据在二维空间中沿蓝线具有最大方差。

我们称这条线为我们的第一个主成分。自然,线上的点仍然比原始 2D 空间中的点更接近,因为您正在失去区分它们的维度。但在很多情况下,通过降维实现的简化超过了信息的损失,损失可以部分或全部重构。

在我们之前的示例中,我们只有一个主成分。一旦进入更高维空间,您可能会使用多个主成分,因为由一个主成分解释的方差通常不足。主成分是相互正交的向量。这意味着它们形成 90 度角。在数学上,正交向量是独立的,这意味着由第二个主成分解释的方差与第一个主成分的方差不重叠。因此,它们尽可能有效地表示信息。第一个主成分将捕获大部分方差;第二个主成分将捕获第一个未解释的方差的第二大部分,依此类推。

实际上,主成分是通过确保特征之间没有信息重叠来尽可能有效地表示数据及其差异的特征组合。原始特征通常显示出显着的冗余,这也是主成分分析在降维方面如此有效的主要原因。

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

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

数据

数据包含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="bottomright",#图例的位置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#标题文字的大小)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。