我正在使用标准 stats
在具有 636,688 行和 7 列的数据集上运行 R 中的 k-means 聚类。包裹:kmeans(dataset, centers = 100, nstart = 25, iter.max = 20)
.
我收到以下错误:Quick-TRANSfer stage steps exceeded maximum (= 31834400)
,虽然可以在 http://svn.r-project.org/R/trunk/src/library/stats/R/kmeans.R 查看代码- 我不确定出了什么问题。我认为我的问题与我的数据集的大小有关,但如果有人能一劳永逸地澄清我可以做些什么来缓解这个问题,我将不胜感激。
最佳答案
我只是有同样的问题。
通过 ?kmeans
查看 R 中的 kmeans 文档:
The Hartigan-Wong algorithm generally does a better job than either of those, but trying several random starts (‘nstart’> 1) is often recommended. In rare cases, when some of the points (rows of ‘x’) are extremely close, the algorithm may not converge in the “Quick-Transfer” stage, signalling a warning (and returning ‘ifault = 4’). Slight rounding of the data may be advisable in that case.
在这些情况下,您可能需要切换到 Lloyd 或 MacQueen 算法。
R 在这里令人讨厌的事情是它继续发出可能被忽视的警告。出于我的基准测试目的,我认为这是一次失败的运行,因此我使用:
if (kms$ifault==4) { stop("Failed in Quick-Transfer"); }
根据您的用例,您可能想要做类似的事情
if (kms$ifault==4) { kms = kmeans(X, kms$centers, algorithm="MacQueen"); }
相反,继续使用不同的算法。
如果您对 K 均值进行基准测试,请注意 R 使用
iter.max=10
默认情况下。可能需要超过 10 次迭代才能收敛。
关于r - kmeans : Quick-TRANSfer stage steps exceeded maximum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21382681/