1

初心者はまた助けが必要です。次元削減ツールである UMAP を使用してデータセットをいじっています。このようなものには、調整して見る必要がある 2 つのパラメーターがあります。以前は tSNE を使用していましたが、1 つのパラメーターの調整が必要です。tSNE の場合、このパラメーターは perplexity と呼ばれます。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))

Tense() の結果は、各行 (サンプル) の x/y 座標を生成し、それらをプロットできます。ただし、ここで 4 つのテスト結果すべてを自動的にマップする方法を教えてくれるとちょっとした助けになります。

さて、テストしたいumapについて。n_neighbors と min_dist の 2 つのパラメーターを同じ方法でテストしたいと考えています。複雑さは、n_neighbors で選択した値ごとに異なります。すべての min_dist テスト値をテストしたいと考えています。たとえば、次の場合: n_neighbors= 10,50,20 min_dist= 0.1, 0.5, 1, 10 n_neighbors=10 のデータに対して umap 関数を実行し、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 もリストを提供します。1 つのマトリックスは、行の 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 に答える