R群集程序包错误.C中不支持Daisy()函数长向量(参数11)

时间:2014-06-18 05:54:47

标签: r csv amazon-ec2 cluster-analysis r-daisy

尝试使用R中data.frame包中的daisy函数将带有数值,名义和NA值的cluster转换为相异度矩阵。我的目的是创建一个相异矩阵在应用k-means聚类进行客户细分之前。 data.frame有133,153行和36列。这是我的机器。

sessionInfo()
R version 3.1.0 (2014-04-10)
Platform x86_64-w64-mingw32/x64 (64-bit) 

如何修复菊花警告?

由于Windows计算机有3 Gb RAM,我将虚拟内存增加到100GB,希望这足以创建矩阵 - 它不起作用。关于内存,我还有一些错误。我已经研究过其他R软件包来解决内存问题,但它们不起作用。我无法将bigmemorybiganalytics包一起使用,因为它只接受数字矩阵。 claraff包也只接受数字矩阵。

CRAN的cluster包表明gower相似系数是应用k-means之前的距离度量。 gower系数采用数值,名义和NA值。

Store1 <- read.csv("/Users/scdavis6/Documents/Work/Client1.csv", head=FALSE)
df <- as.data.frame(Store1)
save(df, file="df.Rda")
library(cluster)
daisy1 <- daisy(df, metric = "gower", type = list(ordratio = c(1:35)))
#Error in daisy(df, metric = "gower", type = list(ordratio = c(1:35))) :
#long vectors (argument 11) are not supported in .C

**编辑:我有RStudio内容到亚马逊网络服务(AWS)r3.8xlarge,内存244Gbs和32个vCPU。我尝试在我的计算机上创建菊花矩阵,但没有足够的RAM。 **

**编辑2:我使用clara函数来聚类数据集。 **

#50 samples
clara2 <- clara(df, 3, metric = "euclidean", stand = FALSE, samples = 50,
                rngR = FALSE, pamLike = TRUE)

1 个答案:

答案 0 :(得分:1)

如果您有大量数据,请使用需要O(n ^ 2)内存的算法。交换到磁盘将 kill 性能,这不是一个明智的选择。

相反,请尝试减少数据集大小,或使用索引加速来避免O(n ^ 2)内存成本。 (而且它不仅是O(n ^ 2)内存,而且还有O(n ^ 2)距离计算,这需要很长时间!)