Есть ли способ нарисовать график UMAP или t-SNE для таблицы данных? - PullRequest
0 голосов
/ 28 октября 2019

У меня есть огромный файл (ниже - небольшой набор данных), как показано ниже, я хотел бы нарисовать PCA, я мог бы нарисовать PCA, используя функцию PCA, но это выглядит немного грязно, потому что у меня есть 200 столбцов, так что я думаю,может быть, t-SNE или UMAP работают лучше, но я не мог рисовать, используя их.

Я хотел бы показать связь и кластеризацию между столбцами (имя столбца) на графике. На самом деле, я собрал данные A, B и ... из разных исследований, и мне нравится проверять, есть ли между ними эффект пакетной обработки или нет.

Буду признателен, если кто-нибудь сможет мне помочь!

DF:

                            A              B             C           D
1:540450-541070    0.12495878     0.71580434    0.65399319  1.04879290
1:546500-548198    0.41064192     0.26136554    0.11939805  0.28721360
1:566726-567392    0.00000000     0.06663644    0.45661687  0.24408844
1:569158-570283    0.34433086     0.27614141    0.54063437  0.21675053
1:603298-605500    0.07036734     0.42324126    0.23017472  0.29530045
1:667800-669700    0.20388011     0.11678913    0.00000000  0.12833913
1:713575-713660    7.29171225     12.53078648   2.38515165  3.82500941
1:724497-727160    0.40730086     0.26664585    0.45678834  0.12209005
1:729399-731900    0.74345727     0.49685579    0.72956458  0.32499580

1 Ответ

0 голосов
/ 28 октября 2019

Вот несколько примеров использования набора данных радужной оболочки, поскольку данные в вашем примере слишком малы для уменьшения размерности.

Для 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()

enter image description here

Для 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()

enter image description here

РЕДАКТИРОВАТЬ: Предположим, у нас есть данные, где каждый субъект представляет собой столбец:

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()

enter image description here

...