Вот несколько примеров использования набора данных радужной оболочки, поскольку данные в вашем примере слишком малы для уменьшения размерности.
Для 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()