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

Sco*_*vis 5 csv r cluster-analysis amazon-ec2 r-daisy

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

sessionInfo()
R version 3.1.0 (2014-04-10)
Platform x86_64-w64-mingw32/x64 (64-bit) 
Run Code Online (Sandbox Code Playgroud)

如何修复雏菊警告?

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

CRAN 的cluster包建议在应用 k 均值之前将高尔相似系数作为距离度量。高尔系数采用数字、名义和 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
Run Code Online (Sandbox Code Playgroud)

**编辑:我将 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)
Run Code Online (Sandbox Code Playgroud)

Ano*_*sse 2

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

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

  • 您也许能够将 O(n) 的结果推广到完整的数据集。参见例如 CLARA 聚类。它仅在样本上运行 k-medoids。然后将完整的数据集分配给这些中心点。如果您可以选择足够小的采样率,则时间复杂度为 O(n),而 PAM 可能为 O(n^3) 左右。哦,您可以尝试使用*索引加速*,这对于某些算法来说可以产生巨大的加速。我用 ELKI 在几分钟内集群了 100k;索引起了很大的作用。 (2认同)