t-SNE是一种用于探索高维数据的非线性降维算法,非常适合将高维数据降到二维或者三维,在使用散点图等基本图表进行可视化。PCA是一种线性算法,他不能解释特征之间的复杂多项式关系,而t-SNE基于在领域图上随机游走的概率分布来找到数据内的结构。
1)SNE构建一个高维数据之间的概率分布图,使得相似的对象有更高的概率被选择,而不相似的对象有较低的概率被选择。
2)SNE在低维空间构建这些点的概率分布,使得这两个概率之间尽可能的相似。
1)t-SNE倾向于保存局部特征,对于维度很高的数据集是不可能完全映射到二维和三维空间的。
2)t-SNE没有唯一最优解,且没有预估部分。
R中Rtsne包Rtsne()函数能够实现对数据降维,结合geom_point()实现可视化
library(Rtsne) # Load package
library(ggplot2)
library(RColorBrewer)
iris_unique <- unique(iris) # Remove duplicates
set.seed(42) # Sets seed for reproducibility
tsne_out <- Rtsne(as.matrix(iris_unique[,1:4])) # Run TSNE
mydata<-data.frame(tsne_out$Y,iris_unique$Species) #tsne_out$Y保存这散点图的二维坐标
colnames(mydata)<-c("t_DistributedY1","t_DistributedY2","Group")
ggplot(mydata,aes(x=t_DistributedY1,y=t_DistributedY2,fill=Group))+
geom_point(shape=21,size=4,color="black",alpha=0.7)+
scale_fill_manual(values=c("#00AFBB", "#FC4E07","#E7B800","#2E9FDF"))+
theme_minimal()
theme(
text=element_text(size=12,face="plain",color="black"),
axis.title=element_text(size=11,face="plain",color="black"),
axis.text = element_text(size=10,face="plain",color="black"),
legend.title = element_text(size=11,face="plain",color="black"),
legend.text = element_text(size=11,face="plain",color="black"),
legend.position=c(0.83,0.15)
)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。