以下是使用 iris 数据集的一些示例,因为您的示例数据对于降维来说有点太小。
对于 tSNE:
library(ggplot2)
library(Rtsne)
dat <- iris
tsne <- Rtsne(dat[!duplicated(dat), -5])
df <- data.frame(x = tsne$Y[,1],
y = tsne$Y[,2],
Species = dat[!duplicated(dat), 5])
ggplot(df, aes(x, y, colour = Species)) +
geom_point()
对于 UMAP:
library(umap)
umap <- umap(dat[!duplicated(dat), -5])
df <- data.frame(x = umap$layout[,1],
y = umap$layout[,2],
Species = dat[!duplicated(dat), 5])
ggplot(df, aes(x, y, colour = Species)) +
geom_point()
编辑:假设我们有数据,其中每个主题都是一列:
dat <- t(mtcars)
唯一的额外步骤是在将数据输入到 tSNE/UMAP 之前转置数据,然后复制绘图数据中的列名称:
tsne <- Rtsne(t(dat), perplexity = 5) # got warning perplexity is too large
df <- data.frame(x = tsne$Y[,1],
y = tsne$Y[,2],
car = colnames(dat))
ggplot(df, aes(x, y, colour = car)) +
geom_point()