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

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

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


降维技术之一是主成分分析 (PCA) 算法,该算法将可能相关变量的一组观察值转换为一组线性不相关变量。在本文中,我们将讨论如何通过使用 R编程语言使用主成分分析来减少数据维度分析葡萄酒数据查看文末了解数据获取方式

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


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

 

 

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

 

主成分分析(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%的置信度椭圆。


点击标题查阅往期内容


高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据


01

02

03

04


置信度椭圆图函数

## 椭圆曲线图
                        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 # 标题文字的大小
)

相关文章
|
3月前
|
数据可视化 数据挖掘 图形学
R语言基础可视化:使用ggplot2构建精美图形的探索
【8月更文挑战第29天】 `ggplot2`是R语言中一个非常强大的图形构建工具,它基于图形语法提供了一种灵活且直观的方式来创建各种统计图形。通过掌握`ggplot2`的基本用法和美化技巧,你可以轻松地将复杂的数据转化为直观易懂的图形,从而更好地理解和展示你的数据分析结果。希望本文能够为你探索`ggplot2`的世界提供一些帮助和启发。
|
3月前
|
数据可视化 数据挖掘 数据处理
R语言高级可视化技巧:使用Plotly与Shiny制作互动图表
【8月更文挑战第30天】通过使用`plotly`和`shiny`,我们可以轻松地创建高度互动的数据可视化图表。这不仅增强了图表的表现力,还提高了用户与数据的交互性,使得数据探索变得更加直观和高效。本文仅介绍了基本的使用方法,`plotly`和`shiny`还提供了更多高级功能和自定义选项,等待你去探索和发现。希望这篇文章能帮助你掌握使用`plotly`和`shiny`制作互动图表的技巧,并在你的数据分析和可视化工作中发挥更大的作用。
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
3月前
|
数据可视化
R语言可视化设计原则:打造吸引力十足的数据可视化
【8月更文挑战第30天】R语言可视化设计是一个综合性的过程,需要综合运用多个设计原则来创作出吸引力十足的作品。通过明确目标、选择合适的图表类型、合理运用色彩与视觉层次、明确标注与引导视线以及引入互动性与动态效果等原则的应用,你可以显著提升你的数据可视化作品的吸引力和实用性。希望本文能为你提供一些有益的启示和帮助。
|
6月前
|
数据可视化 算法
【R语言实战】——kNN和朴素贝叶斯方法实战
【R语言实战】——kNN和朴素贝叶斯方法实战
|
6月前
|
图形学
R语言其他相关函数(各函数解析含实例,可供查询)
R语言其他相关函数(各函数解析含实例,可供查询)
211 0
|
6月前
R语言绘图相关函数(含实例)
R语言绘图相关函数(含实例)
53 0
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
25天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
41 3
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为

热门文章

最新文章