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分析步骤初解相关推荐

  1. arcgis中python坡度计算_ArcGIS不同坡度植被覆盖率分析步骤

    原标题:ArcGIS不同坡度植被覆盖率分析步骤 写在前面的话:这是一个栅格分析的 入门级应用--好吧,算虾神我的实战操作科普系列的作品. 怎么用 ArcGIS做不同坡度的植被覆盖度分析,实际上在Arc ...

  2. 时间序列相关算法与分析步骤

    首先,从时间的角度可以把一个序列基本分为3类: 1.纯随机序列(白噪声序列),这时候可以停止分析,因为就像预测下一次硬币哪一面朝上一样毫无规律. 2.平稳非白噪声序列,它们的均值和方差是常数,对于这类 ...

  3. Android 系统(135)---Android anr 分析步骤总结

    Android anr 分析步骤总结 前言:最近经手了比较多的anr问题,声明经手不是解决,只是从log上推断造成anr的原因,以此作为根据转交给对应的人来处理. 1. ANR简介 ANR全名Appl ...

  4. canoco5冗余分析步骤_基因富集分析|理解

    Gene Set Enrichment Analysis 基因富集分析 哈罗大家好!ヾ(≧▽≦*)o 年初在和老板研究 Identifying Cell Subpopulations 有关的课题,发现 ...

  5. 【机器学习】线性回归实战案例一:多元素情况下广告投放效果分析步骤详解

    线性回归实战案例一:多元素情况下广告投放效果分析步骤详解 2 线性回归 2.1 案例一:多元素情况下广告投放效果分析 2.1.1 模块加载与绘图布局样式设置 2.1.2 加载数据和数据筛选 2.1.3 ...

  6. (五十二) Android anr 分析步骤总结

    前言:最近经手了比较多的anr问题,声明经手不是解决,只是从log上推断造成anr的原因,以此作为根据转交给对应的人来处理. 1. ANR简介 ANR全名Application Not Respond ...

  7. 脑电图源成像:分析步骤的实践回顾

    脑电图(EEG)是测量人脑神经元活动的最古老的技术之一.随着数字技术的进步,脑电图分析已经从单纯的随时间变化的幅度和频率变化的视觉检测,发展到对记录信号的时空特征的全面探索.如今,脑电图(EEG)被认 ...

  8. UMAP分析及可视化

    什么是UMAP?和PCA一样,一种降维的算法,如果不是统计学或者数据专业的人,我建议不要去看它的原理,知道如何用就足够了. 也许听到UMAP最多的是对单细胞数据的分析降维,类似于下图: 然而其他数据, ...

  9. 希尔伯特-包络分析步骤与实例

    希尔伯特-包络分析流程 对于齿轮箱振动信号而言,由于存在多对齿轮同时参与啮合,那么,测量得到的信号将可能出现多个以齿轮啮合频率或及谐频为载波频率.轴频为调制频率的幅值调制.频率调制或混合调制的情况,除 ...

最新文章

  1. ByteBuffer支持类型化的put和get。
  2. Go语言命令行库urfave/cli简介
  3. 【数据结构与算法】之深入解析“分发糖果”的求解思路与算法示例
  4. python 实例化父类对象_在Python中从现有超类实例化子类
  5. 《C++语言入门经典》一第3章 重要的逻辑工具——判断与循环 3.1 条件判断...
  6. OpenCV中基本数据结构(6)_Matx
  7. jquery异步调用post的一些注意事项
  8. 活在贫困线之下的开源软件项目——开源的可持续性斗争
  9. 数据结构 之 并查集(Disjoint Set)
  10. URL编码 java
  11. Java 中与()短路与()以及 或(|)短路或(||)的关系
  12. scrollTop、scrollHeight、offsetTop、offsetHeight、clientTop、clientHeight区别
  13. 快速排序时间复杂度分析
  14. 华硕笔记本BIOS设置详解
  15. 5分钟带你了解Prosody XMPP Server
  16. 74HC595芯片应用
  17. Life's A Struggle
  18. cobaltstrike (cs 使用)初使用
  19. Math函数生成随机数用法
  20. COVID-19席卷全球,看看GIS建模可视化能做些什么

热门文章

  1. 高通WLAN框架学习(2)- -建立和配置WLAN连接
  2. MATLAB环境下基于深度学习的JPEG图像去块(Image Deblocking)
  3. html a5打印高度,找了很久才找到这款A5打印机,专门打印A5尺寸的!
  4. STM32输出5V电平
  5. 30天自制操作系统:第三天 进入32位模式并导入C语言
  6. 【KDD 2020】Local Community Detection in Multiple Networks
  7. 洛谷P1318:积水问题(Java实现)
  8. java 版spring cloud 企业电子招标采购系统
  9. 抖音获客系统源码搭建教程
  10. php源码哪些文件是主程序,ThinkPHP源码分析之核心类文件的加载