概述
UMAP
UMAP (Uniform Manifold Approximation and Projection) 算法是一种创新的降维流形学习算法。来自于拓扑数据分析。可以用于类似于t-SNE的可视化,但也可以用于一般的非线性降维。文章里的这个图可以看出,sars-cov-2感染患者的血清组学数据与健康个体的组学数据得到了很好的分辨,而其他组则表现出一定程度的分离。
数据格式
绘制
很显然,重点在于umap分析,可视化只是常见的散点图。
#------
title: "UMAP"
author: "ZZYE"
date: "2022/3/27"
#-----
# 初次使用需要安装
#install.packages("uamp")
rm(list = ls())
# 路径自己设置
setwd("C:/Users/frank/Desktop/python")
# 载入
library(umap)
library(ggplot2)
#导入数据,首列为行名
df <- read.csv(file = "tes.csv",row.names = 1)
#生成一个不含ID列的新数据集
df_umap <- df[,colnames(df)!='ID']
#按行进行标准化
df_umap <- data.frame(t(apply(df_umap,1,function(v){(v-mean(v,na.rm=T))/sd(v,na.rm=T)})),stringsAsFactors=F)
#替换NA为0
df_umap[is.na(df_umap)] <- 0
#UMAP分析
umap <- umap(df_umap,method='naive',n_neighbors = 10)
#n_neighbors 用似的局部邻域的大小(根据邻域采样点的数量)。数值越大,流形的全局视图就越多,而数值越小,保留的局部数据就越多。通常值应该在2到100的范围内。
#method 可用的方法是“naive”(用纯R编写的实现)和“umap-learn”(需要python包“umap-learn”)
# 查看降维后的结果
head(umap$layout)
#提取umap值作图用
df1 <- data.frame(umap$layout)
df1$ID <- df$ID #加入ID列
colnames(df1) <- c('X','Y') #改个列名 不改也行
p <- ggplot(df1, aes(x=X, y=Y)) + geom_point(size=4)+
xlab(NULL)+ #不添加x y轴名称
ylab(NULL)
p <- p + theme( panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
legend.title=element_blank(), #图例标签隐藏
panel.border = element_blank(),
axis.line.x = element_line(color="black", size = 0.5),
axis.line.y = element_line(color="black", size = 0.5),
panel.background = element_blank())
#按文章的配色改个颜色
p <- p + scale_colour_manual(values=c("#D58F25","#882424","#7DA92E","#5A7EB3"))
p
#保存为svg格式图片
ggsave(p,filename = "umap.svg",width = 5,height = 4)
出图
最后
以上就是英俊小馒头为你收集整理的UMAP分析步骤初解的全部内容,希望文章能够帮你解决UMAP分析步骤初解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复