0

我是使用 R 进行 k-means 聚类的新手,我尝试了一个将两个文件聚类在一起的示例应用程序,并成功使用了以下代码。但是由于我使用的原始文件比这些初始测试文件大得多,所以下面的代码使用 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