之前有人在公眾號留言問過用R語言如何實現t-SNE降維,今天的推文介紹一下R語言實現的代碼,主要內容參考自連結 https://datavizpyr.com/how-to-make-tsne-plot-in-r/
t-SNE 的全稱是 t-Distributed Stochastic Neighbor Embedding,具體的計算原理我也不懂,反正就是類似PCA把高維度的數據轉換成低維度的數據
示例數據集用到的是企鵝的數據集,名稱是penguins,這個數據集來自於R包palmerpenguins,如果要用這個數據還需要安裝這個R包,實現t-SNE需要用到R包Rtsne。R包tidyverse是用來做數據整理的,所以先加載這三個R包,如果是第一次使用需要先安裝,安裝命令是
install.packages("tidyverse")
install.packages("palmerpenguins")
install.packages("Rtsne")
加載需要用到的R包library(tidyverse)
library(palmerpenguins)
library(Rtsne)
選擇數據集中的數值型變量用於後續分析penguins %>%
select(where(is.numeric),-year,species) %>%
mutate(ID=row_number()) %>%
column_to_rownames("ID") %>%
na.omit()-> df這裡新學到的函數
選擇數據框中的數值變量 select(where(is.numeric))給數據集添加1:多少行的數字 mutate(ID=row_number())數據集裡指定列作為行名(前提是不能有重複)column_to_rownames("ID")t-SNE降維tSNE_fit<-df %>%
select(-species) %>%
scale() %>%
Rtsne()
提取降維結果tSNE_fit$Y %>%
as.data.frame() %>%
rename(tSNE1="V1",
tSNE2="V2") %>%
mutate(Species=df$species) -> tSNE.plot
散點圖展示結果library(ggplot2)
ggplot()+
geom_point(data=tSNE.plot,
aes(x=tSNE1,y=tSNE2,color=Species))+
stat_ellipse(data=tSNE.plot,
geom="polygon",
aes(x=tSNE1,y=tSNE2,
group=Species,
fill=Species),
alpha=0.5,
lty="dashed",
color="black",
key_glyph="blank")+
theme_bw()優雅的修改圖例
https://mp.weixin.qq.com/s/I3YnxqulQRu-9i-gZIh7fA
image.png歡迎大家關注我的公眾號
小明的數據分析筆記本
留言討論相關內容
今天推文的示例代碼可以在公眾號後臺留言回復20210827獲取
小明的數據分析筆記本 公眾號 主要分享:1、R語言和python做數據分析和數據可視化的簡單小例子;2、園藝植物相關轉錄組學、基因組學、群體遺傳學文獻閱讀筆記;3、生物信息學入門學習資料及自己的學習筆記!