【问题标题】:MATLAB Warning - Davies-Bouldin Failing to ConvergeMATLAB 警告 - Davies-Bouldin 无法收敛
【发布时间】:2014-09-08 07:40:13
【问题描述】:

我目前正在尝试使用 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 索引上找不到任何内容。

非常感谢,

伊加

【问题讨论】:

    标签: matlab cluster-analysis k-means


    【解决方案1】:

    您可以传递函数句柄,而不是将字符串指定为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)
    

    【讨论】:

      猜你喜欢
      • 2011-06-22
      • 2019-03-14
      • 1970-01-01
      • 2020-08-31
      • 2022-08-19
      • 1970-01-01
      • 2013-01-01
      • 1970-01-01
      • 2018-06-10
      相关资源
      最近更新 更多