【问题标题】:Is there any way to draw UMAP or t-SNE plot for data table?有没有办法为数据表绘制 UMAP 或 t-SNE 图?
【发布时间】:2019-10-28 14:54:58
【问题描述】:

我有一个大文件(下面是一小部分数据),如下所示,我想绘制一个 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

【问题讨论】:

    标签: r ggplot2 pca runumap


    【解决方案1】:

    这里有一些使用 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()
    

    【讨论】:

    • 非常感谢!我的问题是我没有像“物种”这样的列,而我想有列。
    猜你喜欢
    • 2023-03-10
    • 2022-01-16
    • 1970-01-01
    • 2017-12-24
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    相关资源
    最近更新 更多