1

新手再次需要帮助。我正在使用 UMAP(一种降维工具)来处理数据集。像这样的东西将有 2 个参数需要调整和查看。以前我用过 tSNE,它需要一个参数调整。对于 tSNE,该参数称为 perplexity。为了尝试一些困惑值并可视化结果,我认为 purrr 中的 map 函数可以很好地实现自动化。

#for this purpose the sample data can be anything
#only that my dataset has lots labels
df <- data.frame(replicate(110,sample(-10:10,1000,rep=TRUE)))
df.label <- df[,1:20]
df.data <- df[,21:110]

library(tsne)
library(purrr)
#set the test values for perplexity a vector
#map along a vector

perplex=c(10,20,50,100)
map(perplex,tsne(df.data,perplexity = perplex))

时态()的结果将为每一行(样本)生成 ax/y 坐标,然后我可以绘制它们。虽然,这里有一点帮助来教我如何自动绘制所有 4 个测试结果会很棒,否则我必须使用 plot 4 次,每次使用 x=tsne[,1] 和 y=tsne[,2]。

现在,对于我要测试的 umap。我想以相同的方式测试 2 个参数 n_neighbors 和 min_dist 。复杂性在于我为 n_neighbors 选择的每个值,我想测试所有 min_dist 测试值。例如,如果:n_neighbors= 10,50,20 min_dist= 0.1, 0.5, 1, 10 我想在我的数据上运行 umap 函数以获取 n_neighbors=10,然后迭代 min_dist= 0.1, 0.5, 1, 10。然后重复此操作对于 n_neighbors 值的其余部分。

然后我被 purrr 中的 map 函数困住了。我想我只能在函数中传递 1 个向量。

#map along a vector
n_neighbors.test= c(10,50,20)
min_dist.test= c(0.1, 0.5, 1, 10)

map(?,umap(df.data,n_neighbors = n_neighbors.test, min_dist=min_dist.test ))

然后是绘图问题。UMAP 还给出了一个列表,一个矩阵是包含行的 x/y 坐标的布局。

4

1 回答 1

1

尝试 :

expand.grid(n_neighbors.test,n_neighbors) %>% transpose() %>% map(~{umap(df.data,n_neighbors = .x[[1]], min_dist=.x[[2]] )})

或者,您可以使用叠瓦地图:

unlist(map(n_neighbors.test,function(x){
  map(min_dist.test,function(y){umap(df.data,x,y)})
}))
于 2020-06-18T16:48:22.443 回答