我想计算聚类评估的轮廓。R中有一些包,例如cluster和clValid。这是我使用集群包的代码:
# load the data
# a data from the UCI website with 434874 obs. and 3 variables
data <- read.csv("./data/spatial_network.txt",sep="\t",header = F)
# apply kmeans
km_res <- kmeans(data,20,iter.max = 1000,
nstart=20,algorithm="MacQueen")
# calculate silhouette
library(cluster)
sil <- silhouette(km_res$cluster, dist(data))
# plot silhouette
library(factoextra)
fviz_silhouette(sil)
该代码适用于较小的数据,例如具有 50,000 obs 的数据,但是当数据大小有点大时,我会收到类似“错误:无法分配大小为 704.5 Gb 的向量”的错误。这可能是 Dunn 索引和大型数据集的其他内部索引的问题。
我的电脑有 32GB RAM。问题来自计算 dist(data)。我想知道是否可以不提前计算 dist(data),并在剪影公式中需要时计算相应的距离。
感谢您对这个问题的帮助,以及我如何计算大型和超大型数据集的轮廓。