我目前正在尝试使用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索引上找不到任何内容。
非常感谢,
伊加
答案 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)