MATLAB警告 - 戴维斯 - 布尔丁未能融合

时间:2014-07-17 12:21:56

标签: matlab cluster-analysis k-means

我目前正在尝试使用R2014a版MATLAB上的内置函数对数据集运行Davies-Bouldin评估。在较大的数据样本上运行该函数时,我会一直收到类似于以下内容的警告:

"Warning: Failed to converge in 100 iterations during replicate 5. 
> In kmeans>loopBody at 397
  In smartForReduce at 128
  In kmeans at 299
  In ClusterCriterion>@(X,NC)(kmeans(X,NC,'EmptyAction','singleton','rep',5)) at 466
  In ClusterCriterion>ClusterCriterion.evalFun at 309
  In DaviesBouldinEvaluation>DaviesBouldinEvaluation.evalklist at 105
  In DaviesBouldinEvaluation>DaviesBouldinEvaluation.DaviesBouldinEvaluation at 81
  In evalclusters at 176"

我想我明白这是从哪里来的,我的猜测是我需要增加最大迭代次数以消除这种情况,并随后得到更好的答案。

我的问题是,是否有一个参数我可以改变以增加最大迭代次数?我知道你可以在MATLAB中为k-means例程执行此操作,但遗憾的是在Davies-Bouldin索引上找不到任何内容。

非常感谢,

伊加

1 个答案:

答案 0 :(得分:0)

您可以传递函数句柄,而不是将字符串指定为clustering algorithm。这样就可以告诉kmeans算法最大迭代次数(默认为100)。例如:

% clustering algorithm
clustFcn = @(X,K) kmeans(X, K, ...
    'EmptyAction','singleton', 'Replicates',5, ...
    'Options',statset('MaxIter',100));

load fisheriris
eva = evalclusters(meas, clustFcn, 'DaviesBouldin', 'KList',2:6)