0

k-means クラスタリングに R を使用するのは初めてで、2 つのファイルを一緒にクラスタリングするサンプル アプリケーションを試してみたところ、次のコードで成功しました。しかし、私が使用している元のファイルはこれらの最初のテスト ファイルよりもはるかに大きいため、以下のコードは RAM を使いすぎており、これを大きなファイルで使用するのは非効率的だと思います。

file1 <- read.csv("//tmp//file1.txt", sep="\t", header=TRUE)
file1[is.na(file1)]<-0
file2 <- read.csv("//tmp//file2.txt", sep="\t", header=TRUE)
file2[is.na(file2)]<-0
file1_new <- cbind(file1, file_number = 1)
file2_new <- cbind(file1, file_number = 2)
total_input <- rbind(file1_new, file2_new)
myvars <- data.frame(col1 = total_input$col1, file_number = total_input$file_number)
myvars_k_means <- kmeans(myvars, 6)
myvars_k_clustered <- cbind(myvars$col1, myvars$file_number, myvars_k_means$cluster)

bigkmeans 関数を使用した bigmemory と biganalytics に出会いました。しかし、上記を翻訳してbigmatrixを使用するのに苦労しています。これが私が今取り組んでいるコードです。

file1 <- read.big.matrix("//tmp//bigfile1.txt", sep="\t", header=FALSE)
file2 <- read.big.matrix("//tmp//bigfile2.txt", sep="\t", header=FALSE)
file1[is.finite(file1)] <-0
file1[is.finite(file2)] <-0
total_input <- list(file1, file2)
myvars <- cbind(total_input[,1], total_input[,2])
myvars_k_means <- bigkmeans(myvars,6)
myvars_k_clustered <- cbind(total_input[,1], total_input[,2], myvars_k_means$cluster)

NA をゼロに置き換えても機能しません。そのステップを無視すると、NA が原因で単一のクラスターが生成されます。また、cbinds、列の追加も機能しません。もっと簡単な方法が欠けていると思いますが、bigmemory/matrix のドキュメントからはあまり理解できませんでした。助けていただけますか?

4

0 に答える 0