R实战| PCA、tSNE、UMAP三种降维方法在R中的实现
在组学分析中,一般通过降维算法得到低纬度如二维或三维的新坐标数据,再结合可视化技术去展示样本的在新坐标的空间分布,接着加上统计检验结果证实整体组学水平上组间的差异性。降维算法有基于线性
模型的PCA
,也有基于非线性
的tSNE
和UMAP
等方法。
示例数据和代码领取
详见: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()
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_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")
# 圈出异常样本
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)
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")
参考
How To Make tSNE plot in R - Data Viz with Python and R (datavizpyr.com)
How to make UMAP plot in R - Data Viz with Python and R (datavizpyr.com)
How To Make PCA Plot with R - Data Viz with Python and R (datavizpyr.com)
往期内容
CNS图表复现|生信分析|R绘图 资源分享&讨论群!
组学生信| Front Immunol |基于血清蛋白质组早期诊断标志筛选的简单套路
R实战| PCA、tSNE、UMAP三种降维方法在R中的实现相关推荐
- PCA与LDA两种降维方法原理的简要对比
1.PCA(主成分分析) 无监督的,选择的是投影后数据方差最大的方向.因此PCA假设方差越大,代表的信息量越大,使用主成分来表示原始数据可以去除冗余的维度,达到降维的目的. 2.LDA(线性判别分析) ...
- 12种降维方法终极指南(含Python代码)
12种降维方法终极指南(含Python代码) 你遇到过特征超过1000个的数据集吗?超过5万个的呢?我遇到过.降维是一个非常具有挑战性的任务,尤其是当你不知道该从哪里开始的时候.拥有这么多变量既是一个 ...
- 12种降维方法终极指南
来源:Analytics Vidhya 编译:Bot 授权自 论智 你遇到过特征超过1000个的数据集吗?超过5万个的呢?我遇到过.降维是一个非常具有挑战性的任务,尤其是当你不知道该从哪里开始的时候. ...
- 流形学习的四种降维方法
文章目录 流形学习 主成分分析(PCA) 原理 实现 手写版 调库版 缺点 奇异值分解(SVD) 原理 实现 线性判别分析(LDA) 原理 手写版 调库版 PCA与LDA 局部线性嵌入(LLE) 原理 ...
- t-SNE:最好的降维方法之一
引言 本期由来自哈工大的同样热爱科普的潮汐之子为我们带来t-SNE的全方位普及,作者的研究方向为自然语言处理 说明 本文目的是做成一个60分钟t-SNE闪电入门简介,可能无法详细讲解原理,学术帝还请阅 ...
- win10系统停止更新服务器,Win10系统关闭自动更新功能的三种最佳方法
Win10系统正式版发布在即,受到很多微软粉丝的追捧,并且微软也启动了为期一年的免费升级计划.很多用户使用Win10时发现一个问题,win10系统的自动更新功能是无法关闭的,导致用户都是给强制安装了推 ...
- linux电脑滚轮不能用,图文详解电脑鼠标滚轮不动了怎么办_电脑鼠标滚轮不能用的三种解决方法-系统城...
近期,许多小伙伴发现电脑鼠标滚轮失灵了,无缘无故的就无法使用,浏览网页玩游戏都没办法继续进行,真的很麻烦.针对电脑鼠标滚轮不动了的故障,小编收集整理具体原因和解决方法给大家,希望大家采纳! 原因一:鼠 ...
- outlook邮箱邮件大小限制_Office Outlook 2010、2013附件大小超过了允许的范围限制三种解决方法图解...
在outlook2010.2013中添加附件超过20M,就会提示:"附件大小超出了允许的范围"! outlook2007的附件默认大小是150M,而outlook2010.2013 ...
- outlook邮箱邮件大小限制_Office Outlook 2010、2013附件大小超过了允许的范围限制三种解决方法图解 – 爱分享...
在outlook2010.2013中添加附件超过20M,就会提示:"附件大小超出了允许的范围"! outlook2007的附件默认大小是150M,而outlook2010.2013 ...
最新文章
- 基于java的IO流的文件读取系统
- win7下的iis配置
- 下图为双总线结构机器的数据通路_海康机器人为物流加码:进击吧,双11新“打工人”...
- jzoj3519-灵能矩阵【LCM,树形dp】
- java 反射操作字段_x86上的Java最终字段没有操作?
- 你真的懂数据分析吗?一文读懂数据分析的流程、基本方法和实践
- 搏天短网址生成网站源码v3.1
- struts2中的constant配置详解
- PHP中COOKIE即时生效,php实现cookie即时生效
- OpenGL超级宝典(第7版)环境配置和相关问题
- java监控屏幕_Java实现简单屏幕监控
- PS-fiveday-快速选择和魔棒工具(快速抠图)
- java.sql.SQLException: Value ”0000-00-00 00:00:00“ can not be represented as java.sql.Timestamp
- thinkphp5使用容联发送短信验证码
- kotlin集合过滤操作符
- H5浪漫告白气球表白
- input输入长度 vue_Vue实现input宽度随文字长度自适应操作
- 基于Springboot+Vue实现智能停车场管理系统
- 前端技术分享之3/8女神节抽奖活动
- CSS display详解