R语言做图R可视化小本本

【R>>tSNE】tSNE高效降维

2021-05-22  本文已影响0人  高大石头

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

# install.packages("Rtsne") #安装R包

来学习下核心函数Rtsne()的主要参数:

Rtsne(X, dims = 2, initial_dims = 50,
  perplexity = 30, theta = 0.5, check_duplicates = TRUE,
  pca = TRUE, partial_pca = FALSE, max_iter = 1000,
  verbose = getOption("verbose", FALSE), is_distance = FALSE,
  Y_init = NULL, pca_center = TRUE, pca_scale = FALSE,
  normalize = TRUE, stop_lying_iter = ifelse(is.null(Y_init), 250L,
  0L), mom_switch_iter = ifelse(is.null(Y_init), 250L, 0L),
  momentum = 0.5, final_momentum = 0.8, eta = 200,
  exaggeration_factor = 12, num_threads = 1, ...)

下面以常规模型构建过程中产生的risk和riskScore数据为例:

rm(list = ls())
library(Rtsne)
rt <- data.table::fread("riskTrain.txt",data.table = F) %>% 
  column_to_rownames("id") 
data <- rt[,(3:(ncol(rt)-2))]
tsneOut <- Rtsne(data,dims=2,
                 PCA=F,
                 perplexity=10,
                 verbose=F,
                 max_iter=500,
                 check_duplicates=F)
tsne <- data.frame(tSNE1=tsneOut$Y[,1],
                   tSNE2=tsneOut$Y[,2],
                   risk=factor(rt$risk,levels = c("low","high")))

下面结合ggplot2进行绘图:

library(ggsci)
ggplot(tsne,aes(tSNE1,tSNE2))+
  geom_point(aes(color=risk))+
  scale_color_lancet()+
  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的位置信息
        legend.background = element_rect(fill = "grey90", size = 1, colour = "white"))

另一种降维方法:PCA,已在之前的笔记中写过。【R>>PCA】主成分分析

参考链接:
t-SNE一种高效的降维算法

上一篇 下一篇

猜你喜欢

热点阅读