尝试使用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软件包来解决内存问题,但它们不起作用。我无法将bigmemory
与biganalytics
包一起使用,因为它只接受数字矩阵。 clara
和ff
包也只接受数字矩阵。
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)
答案 0 :(得分:1)
如果您有大量数据,请使用不需要O(n ^ 2)内存的算法。交换到磁盘将 kill 性能,这不是一个明智的选择。
相反,请尝试减少数据集大小,或使用索引加速来避免O(n ^ 2)内存成本。 (而且它不仅是O(n ^ 2)内存,而且还有O(n ^ 2)距离计算,这需要很长时间!)