【问题标题】:How can I change the t-sne distance in R?如何更改 R 中的 t-sne 距离?
【发布时间】:2019-04-17 14:21:51
【问题描述】:

我尝试在R 中使用T-sne。 我想使用 dtw 而不是欧几里得距离。 如何更改 R 中的规范?

对精选数据执行算法

library(Rtsne)

tsne <- Rtsne(train[,-1], dims = 2, perplexity=30, verbose=TRUE, max_iter = 500)
tSNE
exeTimeTsne<- system.time(Rtsne(train[,-1], dims = 2, perplexity=30, verbose=TRUE, max_iter = 500))

【问题讨论】:

  • 我不知道什么是动态时间扭曲,但如果它创建一个距离矩阵,您可以提供它而不是计算欧几里得距离。请参阅?Rtsne 寻求帮助。
  • 你的意思是我必须先制作一个 dtw 距离矩阵。数据 X 的类别变成了一个 dist。然后在 Rtsne 中更改“is_distance=true”。对吗?
  • @Anonymouscoward:你能把它变成给定距离度量的答案吗,比如bray-curtismanhattan?谢谢!
  • 我可以发布一个答案,但请记住我不熟悉Rtsne,所以我只是插入一个矩阵。

标签: r machine-learning artificial-intelligence dtw


【解决方案1】:

您可以使用您选择的方法将任何距离矩阵提供给Rtsne,并将is_distance 标志设置为TRUE。有关详细信息,请参阅?Rtsne提供预先计算的距离部分。

library(Rtsne)
library(vegan)

df = data.frame(A = c(4, 11, 17, 0, 2, 4, 8, 10, 2, 4),
                B = c(6, 10, 7, 2, 21, 3, 3, 0, 2, 17),
                C = c(5, 2, 3, 12, 12, 14, 0, 7, 8, 2),
                D = c(7, 16, 24, 18, 31, 8, 2, 21, 3, 13))


bc <- vegdist(df, method = "bray")
tSNE <- Rtsne(bc, is_distance = TRUE, dims = 2, perplexity = 2, verbose = TRUE, max_iter = 500)

【讨论】:

  • 完美,非常感谢。我会记住,我仍然必须以有意义的方式应用它;-)
猜你喜欢
  • 2017-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-21
  • 1970-01-01
  • 1970-01-01
  • 2020-10-09
相关资源
最近更新 更多