evalclusters

Оцените решения по кластеризации

Описание

пример

eva = evalclusters(x,clust,criterion) создает кластеризирующийся объект оценки, содержащий данные, используемые, чтобы оценить оптимальное количество кластеров данных.

eva = evalclusters(x,clust,criterion,Name,Value) создает кластеризирующийся объект оценки, использующий дополнительные опции, заданные одним или несколькими аргументами пары "имя-значение".

Примеры

свернуть все

Оцените оптимальное количество кластеров с помощью Calinski-Harabasz кластеризирующийся критерий оценки.

Загрузите выборочные данные.

load fisheriris

Данные содержат измерения длины и ширины от чашелистиков и лепестков трех разновидностей ирисовых цветов.

Оцените оптимальное количество кластеров с помощью критерия Calinski-Harabasz. Кластеризируйте данные с помощью kmeans.

rng('default') % For reproducibility
eva = evalclusters(meas,'kmeans','CalinskiHarabasz','KList',1:6)
eva = 
  CalinskiHarabaszEvaluation with properties:

    NumObservations: 150
         InspectedK: [1 2 3 4 5 6]
    CriterionValues: [NaN 513.9245 561.6278 530.4871 456.1279 469.5068]
           OptimalK: 3

OptimalK значение указывает, что на основе критерия Calinski-Harabasz оптимальное количество кластеров равняется трем.

Используйте входную матрицу предложенных решений по кластеризации, чтобы оценить оптимальное количество кластеров.

Загрузите выборочные данные.

load fisheriris;

Данные содержат измерения длины и ширины от чашелистиков и лепестков трех разновидностей ирисовых цветов.

Используйте kmeans создать входную матрицу предложенных решений по кластеризации для измерений длины чашелистика, с помощью 1, 2, 3, 4, 5, и 6 кластеров.

clust = zeros(size(meas,1),6);
for i=1:6
clust(:,i) = kmeans(meas,i,'emptyaction','singleton',...
        'replicate',5);
end

Каждая строка clust соответствует одному измерению длины чашелистика. Каждый из этих шести столбцов соответствует решению по кластеризации, содержащему 1 - 6 кластеров.

Оцените оптимальное количество кластеров с помощью критерия Calinski-Harabasz.

eva = evalclusters(meas,clust,'CalinskiHarabasz')
eva = 
  CalinskiHarabaszEvaluation with properties:

    NumObservations: 150
         InspectedK: [1 2 3 4 5 6]
    CriterionValues: [NaN 513.9245 561.6278 530.4871 456.1279 469.5068]
           OptimalK: 3

OptimalK значение указывает, что на основе критерия Calinski-Harabasz оптимальное количество кластеров равняется трем.

Используйте указатель на функцию, чтобы задать кластеризирующийся алгоритм, затем оцените оптимальное количество кластеров.

Загрузите выборочные данные.

load fisheriris;

Данные содержат измерения длины и ширины от чашелистиков и лепестков трех разновидностей ирисовых цветов.

Используйте указатель на функцию, чтобы задать кластеризирующийся алгоритм.

myfunc = @(X,K)(kmeans(X, K, 'emptyaction','singleton',...
    'replicate',5));

Оцените оптимальное количество кластеров для данных о длине чашелистика с помощью критерия Calinski-Harabasz.

eva = evalclusters(meas,myfunc,'CalinskiHarabasz',...
    'klist',[1:6])
eva = 
  CalinskiHarabaszEvaluation with properties:

    NumObservations: 150
         InspectedK: [1 2 3 4 5 6]
    CriterionValues: [NaN 513.9245 561.6278 530.4871 456.1279 469.5068]
           OptimalK: 3

OptimalK значение указывает, что на основе критерия Calinski-Harabasz оптимальное количество кластеров равняется трем.

Входные параметры

свернуть все

Входные данные в виде N-by-P матрица. N является количеством наблюдений, и P является количеством переменных.

Типы данных: single | double

Кластеризация алгоритма в виде одного из следующих.

'kmeans'Кластеризируйте данные в x использование kmeans кластеризация алгоритма, с 'EmptyAction' установите на 'singleton' и 'Replicates' установите на 5.
'linkage'Кластеризируйте данные в x использование clusterdata агломерационный алгоритм кластеризации, с 'Linkage' установите на 'ward'.
'gmdistribution'Кластеризируйте данные в x использование gmdistribution Гауссов алгоритм распределения смеси, с 'SharedCov' установите на true и 'Replicates' установите на 5.

Если criterion 'CalinskiHarabasz', 'DaviesBouldin', или 'silhouette', можно задать кластеризирующийся алгоритм с помощью указателя на функцию. Функция должна иметь форму C = clustfun(DATA,K), где DATA данные должны кластеризироваться, и K количество кластеров. Выход clustfun должно быть одно из следующего:

  • Вектор из целых чисел, представляющих кластерный индекс для каждого наблюдения в DATA. Должен быть K уникальные значения в этом векторе.

  • Числовой n-by-K матрица счета к наблюдениям n и классам K. В этом случае кластерный индекс для каждого наблюдения определяется путем взятия самого большого значения баллов в каждой строке.

Если criterion 'CalinskiHarabasz', 'DaviesBouldin', или 'silhouette', можно также задать clust как n-by-K матрица, содержащая предложенные решения по кластеризации. n является количеством наблюдений в выборочных данных, и K является количеством предложенных решений по кластеризации. Столбец j содержит кластерные индексы для каждой из точек N в j th решение по кластеризации.

Типы данных: single | double | char | string | function_handle

Кластеризация критерия оценки в виде одного из следующих.

'CalinskiHarabasz'Создайте CalinskiHarabaszEvaluation кластеризация объекта оценки, содержащего Calinski-Harabasz, индексирует значения. Для получения дополнительной информации см. Критерий Calinski-Harabasz.
'DaviesBouldin'Создайте DaviesBouldinEvaluation кластерный объект оценки, содержащий Дэвиса-Булдина, индексирует значения. Для получения дополнительной информации смотрите Критерий Дэвиса-Булдина.
'gap'Создайте GapEvaluation кластерный объект оценки, содержащий значения критерия разрыва. Для получения дополнительной информации смотрите Значение Разрыва.
'silhouette'Создайте SilhouetteEvaluation кластерный объект оценки, содержащий значения контура. Для получения дополнительной информации смотрите Значение Контура.

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'KList',[1:5],'Distance','cityblock' задает, чтобы протестировать 1, 2, 3, 4, и 5 кластеров с помощью метрики расстояния городского квартала.
Для всех критериев

свернуть все

Список количества кластеров, чтобы оценить в виде разделенной запятой пары, состоящей из 'KList' и вектор из положительных целочисленных значений. Необходимо задать KList когда clust кластеризирующееся имя алгоритма или указатель на функцию. Когда criterion 'gap', clust должен быть вектор символов, строковый скаляр или указатель на функцию, и необходимо задать KList.

Пример: 'KList',[1:6]

Типы данных: single | double

Для контура и разрыва

свернуть все

Метрика расстояния, используемая в вычислениях значения критерия в виде разделенной запятой пары, состоящей из 'Distance' и одно из следующих.

'sqEuclidean'Придал Евклидову расстоянию квадратную форму
'Euclidean'Евклидово расстояние. Эта опция не допустима для kmeans кластеризация алгоритма.
'cityblock'Сумма абсолютных разностей
'cosine'Один минус косинус включенного угла между точками (обработанный как векторы)
'correlation'Один минус корреляция выборки между точками (обработанный как последовательности значений)
'Hamming'Процент координат, которые отличаются. Эта опция только допустима для Silhouette критерий.
'Jaccard'Процент ненулевых координат, которые отличаются. Эта опция только допустима для Silhouette критерий.

Для получения дальнейшей информации о каждой метрике расстояния, смотрите pdist.

Можно также задать функцию для метрики расстояния использование указателя на функцию. Функция расстояния должна иметь форму d2 = distfun(XI,XJ), где XI 1 n вектором, соответствующим одной строке входной матрицы X, и XJ m 2 n матрицей, соответствующей нескольким строкам X. distfun должен возвратить m 2 1 вектор из расстояний d2, чей k th элемент является расстоянием между XI и XJ(k,:).

Distance только принимает указатель на функцию если кластеризирующийся алгоритм clust принимает указатель на функцию как метрику расстояния. Например, kmeans кластеризация алгоритма не принимает указатель на функцию как метрику расстояния. Поэтому, если вы используете kmeans алгоритм и затем задает указатель на функцию для Distance, программные ошибки.

  • Если criterion 'silhouette', можно также задать Distance когда выходной вектор создается функцией pdist.

  • Когда clust 'kmeans' или 'gmdistribution', evalclusters использует метрику расстояния, заданную для Distance кластеризировать данные.

  • Если clust 'linkage', и Distance любой 'sqEuclidean' или 'Euclidean', затем кластеризирующийся алгоритм использует Евклидово расстояние и рычажное устройство Уорда.

  • Если clust 'linkage' и Distance любая другая метрика, затем кластеризирующийся алгоритм использует заданную метрику расстояния и среднее рычажное устройство.

  • Во всех других случаях метрика расстояния задана для Distance должен совпадать с метрикой расстояния, используемой в кластеризирующемся алгоритме, чтобы получить значимые результаты.

Пример: 'Distance','Euclidean'

Типы данных: single | double | char | string | function_handle

Для контура только

свернуть все

Априорные вероятности для каждого кластера в виде разделенной запятой пары, состоящей из 'ClusterPriors' и одно из следующих.

'empirical'Вычислите полное значение контура для решения по кластеризации путем усреднения значений контура для всех точек. Каждый кластер способствует полному значению контура пропорционально к его размеру.
'equal'Вычислите полное значение контура для решения по кластеризации путем усреднения значений контура для всех точек в каждом кластере, и затем усреднения тех значений через все кластеры. Каждый кластер способствует одинаково полному значению контура, независимо от его размера.

Пример: 'ClusterPriors','empirical'

Для разрыва только

свернуть все

Количество наборов справочных данных сгенерировало от ссылочного распределения ReferenceDistributionВ виде разделенной запятой пары, состоящей из 'B' и положительное целочисленное значение.

Пример: 'B',150

Типы данных: single | double

Метод генерации справочных данных в виде разделенной запятой пары, состоящей из 'ReferenceDistributions' и одно из следующих.

'PCA'Сгенерируйте справочные данные от равномерного распределения по полю, выровненному с основными компонентами матрицы данных x.
'uniform'Сгенерируйте справочные данные однородно в области значений каждой функции в матрице данных x.

Пример: 'ReferenceDistribution','uniform'

Метод для выбора оптимального количества кластеров в виде разделенной запятой пары, состоящей из 'SearchMethod' и одно из следующих.

'globalMaxSE'

Оцените каждое предложенное количество кластеров в KList и выберите самое маленькое количество удовлетворения кластеров

Gap(K)GAPMAXSE(GAPMAX),

где K является количеством кластеров, Разрыв (K) является значением разрыва для решения по кластеризации с кластерами K, GAPMAX является самым большим значением разрыва, и SE (GAPMAX) является стандартной погрешностью, соответствующей самому большому значению разрыва.

'firstMaxSE'

Оцените каждое предложенное количество кластеров в KList и выберите самое маленькое количество удовлетворения кластеров

Gap(K)Разрыв(K+1)SE(K+1),

где K является количеством кластеров, Разрыв (K) является значением разрыва для решения по кластеризации с кластерами K, и SE (K + 1) является стандартной погрешностью решения по кластеризации с K + 1 кластер.

Пример: 'SearchMethod','globalMaxSE'

Выходные аргументы

свернуть все

Кластеризация данных об оценке, возвращенных как кластеризирующийся объект оценки.

Введенный в R2013b