用户工具

站点工具


r实现tsne降维及可视化

R实现tSNE降维及可视化

简介

t-SNE:T-Distribution Stochastic Neighbour Embedding, T分布随机近邻嵌入。与PCA一样是常用的降维方法,其主要优势在于能保持局部结构的能力,即高维数据空间中距离相近的点投影到低维空间中仍然相近。 R语言中实现的包:Rtsne

测试数据

与流程中PCA使用数据相同,样本gene表达矩阵,gene_fpkm.xls。

R

install.packages("Rtsne") 
library(Rtsne)
 
df<-read.table("test.xls",header = T,sep='\t',row.names = 1)
new_df <- t(df)      #将输入文件转置使列为gene,行为sample
 
condition <- read.table("condition.xls",header = T)
sample <- data.frame(id=condition$sample,group=condition$group)
 
set.seed(1)          # t-SNE结果随机,进行分析之前需设置随机数种子是结果具有可重复性
tsne_out = Rtsne(  new_df,                #待降维矩阵
                        dims = 2,         #正整数,表示降维后的数据纬度——将数据降到几维? 
                        pca = F,          #TRUE/FALSE,表示在进行t-SNE前是否进行主成分分析PCA,然后使用PCA得到的top50主成分分析进行后续计算。因为t-SNE的计算量是非常大的。
                        max_iter = 1000,  #表示迭代次数,默认为1000。 
                        theta = 0.4,      #是速度/精度权衡,范围在0~1之间,数值越小越精确,默认0.5。该参数影响最终结果,可根据可视化结果进行调整。
                        perplexity = 3,   #困惑度,具体没整明白干啥的, 大小必须**小于**(nrow(data)-1)/3
                        check_duplicates = FALSE,  检查是否存在重复项。最好确保在进行t-SNE之前数据不存在重复项,并将此选项设置为FALSE。
                        verbose = F)
tsne_out         #输出结果是一个列表,其中元素Y就是降维结果。
 
#library(ggalt)
library(ggplot2)
tsne_result = as.data.frame(tsne_out$Y)
colnames(tsne_result) = c("tSNE1","tSNE2")
tsne_result$group=sample$group
 
p <- ggplot(tsne_result,aes(tSNE1,tSNE2,color=group)) +  
  geom_point() + 
  #stat_ellipse(level = 0.9)+                 #与PCA相同可添加置信区间
  #geom_encircle(aes(group=group), expand=0.1,spread=0.5,s_shape=0.9) +           #ggalt包将同组散点圈起来  
  theme_bw()+
  theme(plot.margin = unit(rep(1.5,4),"lines"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())
        #legend.position = c(0.9,0.1), 
        #legend.background = element_rect(fill = "grey90", size = 1, colour = "white"))
 
pdf("test.tsne.pdf")

测试路径

/TJPROJ6/NC_BG_SH/shouhou/202306/X101SC22012246-Z01-J001_Rtsne

r实现tsne降维及可视化.txt · 最后更改: 2023/07/20 15:30 由 lihang