R实战| PCA、tSNE、UMAP三种降维方法在R中的实现

本文涉及的产品
可视分析地图(DataV-Atlas),3 个项目,100M 存储空间
数据可视化DataV,5个大屏 1个月
简介: R实战| PCA、tSNE、UMAP三种降维方法在R中的实现

降维

在组学分析中,一般通过降维算法得到低纬度如二维或三维的新坐标数据,再结合可视化技术去展示样本的在新坐标的空间分布,接着加上统计检验结果证实整体组学水平上组间的差异性。降维算法有基于线性模型的PCA,也有基于非线性tSNEUMAP等方法。

示例数据和代码领取

详见:R实战| PCA、tSNE、UMAP三种降维方法在R中的实现


PCA

主成分分析(Principal Component Analysis,PCA)是最常用的无监督学习方法。

rm(list = ls())
library(tidyverse)
library(broom)
library(palmerpenguins)
# 示例数据
penguins <- penguins %>%
  drop_na() %>%
  select(-year)
head(penguins)
# 使用prcomp()进行PCA
# PCA前对数值型数据进行标准化
pca_fit <- penguins %>%
  select(where(is.numeric)) %>%
  scale() %>%
  prcomp()
# 查看成分重要性
summary(pca_fit)
# 可视化PC1和PC2
pca_fit %>%
  augment(penguins) %>%
  rename_at(vars(starts_with(".fitted")),
            list(~str_replace(.,".fitted",""))) %>%
  ggplot(aes(x=PC1, 
             y=PC2,
             color=species,
             shape=sex))+
  geom_point()

PCA plot: PC1 vs PC2

UMAP

数据预处理

## UMAP
rm(list = ls())
library(tidyverse)
library(palmerpenguins)
#install.packages("umap")
library(umap)
theme_set(theme_bw(18))
penguins <- penguins %>% 
  drop_na() %>%
  select(-year)%>%
  mutate(ID=row_number()) 
penguins_meta <- penguins %>%
  select(ID, species, island, sex)

使用umap包进行umap分析

set.seed(142)
umap_fit <- penguins %>%
  select(where(is.numeric)) %>%
  column_to_rownames("ID") %>%
  scale() %>% 
  umap()
umap_df <- umap_fit$layout %>%
  as.data.frame()%>%
  rename(UMAP1="V1",
         UMAP2="V2") %>%
  mutate(ID=row_number())%>%
  inner_join(penguins_meta, by="ID")
umap_df %>% head()

可视化

# 可视化
umap_df %>%
  ggplot(aes(x = UMAP1, 
             y = UMAP2, 
             color = species,
             shape = sex))+
  geom_point()+
  labs(x = "UMAP1",
       y = "UMAP2",
       subtitle = "UMAP plot")

UMAP plot in R: Example 1

# 分面
umap_df %>%
  ggplot(aes(x = UMAP1, 
             y = UMAP2,
             color = species)) +
  geom_point(size=3, alpha=0.5)+
  facet_wrap(~island)+
  labs(x = "UMAP1",
       y = "UMAP2",
       subtitle="UMAP plot")+
  theme(legend.position="bottom")

UMAP plot in R: Example 2

# 圈出异常样本
library(ggforce)
umap_df %>%
  ggplot(aes(x = UMAP1,
             y = UMAP2, 
             color = species,
             shape = sex)) +
  geom_point() +
  labs(x = "UMAP1",
       y = "UMAP2",
       subtitle="UMAP plot") +
  geom_circle(aes(x0 = -5, y0 = -3.8, r = 0.65), 
              color = "green",
              inherit.aes = FALSE)

UMAP Plot to Identify Potential sample mix-ups

tSNE

数据预处理

## tSNE
rm(list = ls())
library(tidyverse)
library(palmerpenguins)
library(Rtsne)
theme_set(theme_bw(18))
penguins <- penguins %>% 
  drop_na() %>%
  select(-year)%>%
  mutate(ID=row_number())
penguins_meta <- penguins %>%
  select(ID,species,island,sex)

使用Rtsne 包进行tSNE 分析

set.seed(142)
tSNE_fit <- penguins %>%
  select(where(is.numeric)) %>%
  column_to_rownames("ID") %>%
  scale() %>% 
  Rtsne()
tSNE_df <- tSNE_fit$Y %>% 
  as.data.frame() %>%
  rename(tSNE1="V1",
         tSNE2="V2") %>%
  mutate(ID=row_number())
tSNE_df <- tSNE_df %>%
  inner_join(penguins_meta, by="ID")
tSNE_df %>% head()

可视化

tSNE_df %>%
  ggplot(aes(x = tSNE1, 
             y = tSNE2,
             color = species,
             shape = sex))+
  geom_point()+
  theme(legend.position="bottom")

tSNE Plot

参考

  1. How To Make tSNE plot in R - Data Viz with Python and R (datavizpyr.com)
  2. How to make UMAP plot in R - Data Viz with Python and R (datavizpyr.com)
  3. How To Make PCA Plot with R - Data Viz with Python and R (datavizpyr.com)

往期内容

  1. CNS图表复现|生信分析|R绘图 资源分享&讨论群!
  2. 组学生信| Front Immunol |基于血清蛋白质组早期诊断标志筛选的简单套路
相关实践学习
DataV Board用户界面概览
本实验带领用户熟悉DataV Board这款可视化产品的用户界面
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3&nbsp;)前置知识要求 &nbsp; 课程大纲 第一章&nbsp;了解数据仓库概念 初步了解数据仓库是干什么的 第二章&nbsp;按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章&nbsp;数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章&nbsp;采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章&nbsp;用户行为数据仓库 严格按照企业的标准开发 第六章&nbsp;搭建业务数仓理论基础和对表的分类同步 第七章&nbsp;业务数仓的搭建&nbsp; 业务行为数仓效果图&nbsp;&nbsp;
相关文章
|
6月前
|
数据采集 机器学习/深度学习 搜索推荐
大模型开发: 描述主成分分析(PCA)以及它在降维中的应用。
PCA是广泛应用的降维技术,通过线性变换找到最大化方差的主成分,降低数据维度,简化计算并揭示数据结构。步骤包括数据预处理、计算协方差矩阵、特征值分解、选择主成分和数据转换。适用于图像识别、推荐系统等领域,但无监督性质可能导致类别信息丢失,且假设数据服从高斯分布。
94 1
|
3月前
|
机器学习/深度学习 算法 数据中心
【机器学习】面试问答:PCA算法介绍?PCA算法过程?PCA为什么要中心化处理?PCA为什么要做正交变化?PCA与线性判别分析LDA降维的区别?
本文介绍了主成分分析(PCA)算法,包括PCA的基本概念、算法过程、中心化处理的必要性、正交变换的目的,以及PCA与线性判别分析(LDA)在降维上的区别。
82 4
|
6月前
|
算法 数据可视化 Python
使用Python实现主成分分析(PCA)
使用Python实现主成分分析(PCA)
194 4
|
6月前
|
机器学习/深度学习 数据采集 算法
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分析分类预测房价及交叉验证|数据分享
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分析分类预测房价及交叉验证|数据分享
|
机器学习/深度学习 存储 搜索推荐
三个主要降维技术对比介绍:PCA, LCA,SVD
本文将深入研究三种强大的降维技术——主成分分析(PCA)、线性判别分析(LDA)和奇异值分解(SVD)。我们不仅介绍这些方法的基本算法,而且提供各自的优点和缺点。
127 1
|
机器学习/深度学习 存储 传感器
【分类】基于PCA+Kmeans、PCA+LVQ、BP神经网络实现数据分类附matlab代码
【分类】基于PCA+Kmeans、PCA+LVQ、BP神经网络实现数据分类附matlab代码
|
机器学习/深度学习 算法 Python
机器学习算法之---PCA(主成分分析)
PCA(Principal Component Analysis)是一种常用的数据降维方法,可以将高维的数据降维到低维,以提取关键信息和减少噪音。它通过找到数据集中最重要的方向,并将数据在这个方向上投影,从而实现降维。
197 0
机器学习算法之---PCA(主成分分析)
|
机器学习/深度学习 数据可视化 算法
.Kmeans无监督学习主成分分析(PCA)
.Kmeans无监督学习主成分分析(PCA)
219 0
.Kmeans无监督学习主成分分析(PCA)
ML之KMeans:利用KMeans算法对Boston房价数据集(两特征+归一化)进行二聚类分析
ML之KMeans:利用KMeans算法对Boston房价数据集(两特征+归一化)进行二聚类分析
ML之KMeans:利用KMeans算法对Boston房价数据集(两特征+归一化)进行二聚类分析
ML之DR之PCA:利用PCA对手写数字图片识别数据集进行降维处理(理解PCA)
ML之DR之PCA:利用PCA对手写数字图片识别数据集进行降维处理(理解PCA)