考虑关注模拟数据。
x1 <- c(rnorm(500000,5),rnorm(500000),rnorm(500000,5),rnorm(500000,15))
y1 <- c(rnorm(500000,5),rnorm(500000),rnorm(500000,15),rnorm(500000,5))
label <- rep(c("c1","c2","c3","c4"), each = 500000)
dset = data.frame(x1,y1,label)
with(dset,plot(x1,y1,col = label))
所以有4个集群,我想使用K均值算法。一般说使用20 - 25'nstart'是合适的。但它对大样本有何影响?这里我的样本量是2百万。那么,有没有办法为大样本决定'nstart'?
这是我起诉的代码。请注意,我想对我的代码使用一些并行处理,这样我就可以使用4个内核来完成工作。
parLapply( cl, c(25,25,25,25), fun=kmeans( x=dset[,c(1,2), centers=4, nstart=i ) )
答案 0 :(得分:1)
n_start不一定取决于样本数量。
您将拥有一个单运行的数据集,可以可靠地找到使用k-means可以获得的最佳聚类。
在其他数据集上,没有一个是好的,因为k-means根本不适用于数据。
我宁愿做以下事情:少量运行k-means。如果你得到非常相似的结果,一旦你看到更好的结果,使用你已经拥有的最好的结果。如果结果非常不同,则k-means不起作用,您可以停下来做其他事情。