Предупреждение MATLAB — Дэвис-Булдин не может сходиться

В настоящее время я пытаюсь запустить оценку Дэвиса-Булдина для набора данных, используя встроенную функцию в версии MATLAB R2014a. При запуске функции на большей выборке данных я продолжаю получать предупреждения, подобные следующему:

"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"

Я думаю, что понимаю, откуда это берется, и я предполагаю, что мне нужно увеличить максимальное количество итераций, чтобы устранить это и впоследствии получить лучший ответ.

Мой вопрос: есть ли параметр, который я могу изменить, чтобы увеличить максимальное количество итераций? Я знаю, что вы можете сделать это для процедуры k-средних в MATLAB, но, к сожалению, ничего не можете найти в индексе Дэвиса-Булдина.

Большое спасибо,

Ига


person user154553    schedule 17.07.2014    source источник


Ответы (1)


Вместо указания строки в качестве алгоритма кластеризации вы можете передать функцию ручка. Таким образом вы сообщаете алгоритму 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)
person Amro    schedule 17.07.2014