5

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

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

如何修复菊花警告?

由于 Windows 计算机具有 3 Gb RAM,我将虚拟内存增加到 100 GB,希望这足以创建矩阵 - 它没有工作。我仍然有一些关于内存的错误。我研究了其他 R 包来解决内存问题,但它们不起作用。我不能bigmemorybiganalytics包一起使用,因为它只接受数字矩阵。和包claraff只接受数字矩阵。

CRAN 的cluster软件包建议在应用 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 与 Amazon Web Service (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)
4

1 回答 1

2

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

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

于 2014-06-23T19:38:43.347 回答