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

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

时间:2024-04-03 22:44:05浏览次数:21  
标签:1.5 标签 散点图 图例 成分 大小 PCA cex

原文链接: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)

标签:1.5,标签,散点图,图例,成分,大小,PCA,cex
From: https://www.cnblogs.com/tecdat/p/18113663

相关文章

  • 【故障诊断】基于 KPCA 进行降维、故障检测和故障诊断研究(Matlab代码实现)
    ......
  • 【故障检测】基于 KPCA 的故障检测【T2 和 Q 统计指数的可视化】(Matlab代码实现)
    ......
  • 13. 一起学习机器学习 PCA
    LineardimensionalityreductionThepurposeofthisnotebookistounderstandandimplementtwolineardimensionalityreductionmethods:Principlecomponentanalysis(PCA)Non-NegativeMatrixFactorization(NMF)Themainideaofthesemethodsistoappro......
  • R:PCA(第三版)
    #清除所有变量rm(list=ls())#设置工作目录setwd("C:\\Users\\Administrator\\Desktop\\新建文件夹\\PCA_Pathway")#1.加载所需的库library(vegan)library(tidyverse)library(ggpubr)library(patchwork)library(ggforce)#2.读取和处理数据otu<-read.tabl......
  • 雪花算法生成分布式序列号
    packageio.binghe.seckill.infrastructure.utils.id;importjava.util.Date;publicclassSnowFlake{/***起始的时间戳:2023-04-1913:42:00,使用时此值不可修改*/privatefinalstaticlongSTART_STMP=1681882920782L;/***每一部分......
  • 课程设计——基于matlab语言的PCA人脸识别系统的设计与实现,采用GUI界面进行效果演示
    本论文源码是基于Matlab实现的PCA算法来进行人脸图片的识别与比对,通过GUI界面进行效果展示,适合基于matlab、人脸识别等人工智能领域的课程设计和毕设,整个算法结构简单、易于理解,如需完整源码,可以联系博主获取。一、引言人脸识别技术作为计算机视觉领域的一个重要分支,因其......
  • PCA碎石图
    碎石图(ScreePlot)是一种用于主成分分析(PCA)的可视化工具,它帮助我们决定在数据集中保留多少个主成分(PCs)是合适的。在PCA中,每个主成分都代表数据中的一个方差来源,第一个主成分解释了数据中最大的方差部分,第二个主成分解释了剩余方差中最大的部分,依此类推,每个后续的主成分都解释了在......
  • 【机器学习】无监督学习算法之:主成分分析
    主成分分析1、引言2、主成分分析2.1定义2.2原理2.3实现方式2.4算法公式2.5代码示例3、总结1、引言小屌丝:鱼哥,快,快。小鱼:…啥情况,你可别乱喊。小屌丝:额…我的意思,是你该继续小鱼:…说清楚,继续啥???小屌丝:就…就是…继续啊小鱼:我擦…你说清楚,不然容易误......
  • 主成成分分析(PCA 数据降维)
    在很多场景中需要对多变量数据进行观测,在一定程度上增加了数据采集的工作量。更重要的是:多变量之间可能存在相关性,从而增加了问题分析的复杂性。主成分分析(PrincipalComponentsAnalysis,PCA)是一种使用最广泛的数据降维算法(非监督的机器学习方法)。旨在降低数据的维数,通过保......
  • 机器学习模型—主成分分析 降维魔法
    机器学习模型—主成分分析降维魔法在许多领域的研究与应用中,我们通常需要对含有多个变量的数据进行观测和分析。然而,多变量大数据集不仅增加了数据采集的工作量,还使问题分析变得复杂。此时,主成分分析(PCA)作为一种降维算法,能够帮助我们从高维数据中提取关键信息,减少维度,同时......