cluster

Создайте агломерационные кластеры из рычажных устройств

Описание

T = cluster(Z,'Cutoff',C) задает кластеры от агломерационного иерархического кластерного древовидного Z. Вход Z выход linkage функция для матрицы входных данных X. cluster сокращения Z в кластеры, с помощью C как порог для коэффициентов несоответствия (или inconsistent значения) узлов в дереве. Выход T содержит кластерные присвоения каждого наблюдения (строка X).

пример

T = cluster(Z,'Cutoff',C,'Depth',D) оценивает inconsistent значения, смотря на глубину D ниже каждого узла.

пример

T = cluster(Z,'Cutoff',C,'Criterion',criterion) использование любой 'inconsistent' (значение по умолчанию) или 'distance' как criterion для определения кластеров. criterion должен быть меньше C для cluster задавать кластеры.

пример

T = cluster(Z,'MaxClust',N) задает максимум N кластеры с помощью 'distance' как критерий определения кластеров.

Примеры

свернуть все

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

Случайным образом сгенерируйте выборочные данные.

rng('default'); % For reproducibility
X = [(randn(20,2)*0.75)+1;
    (randn(20,2)*0.25)-1];

Создайте график рассеивания данных.

scatter(X(:,1),X(:,2));
title('Randomly Generated Data');

Создайте иерархическое кластерное дерево с помощью ward метод рычажного устройства.

Z = linkage(X,'ward');

Создайте график данных древовидной схемы.

dendrogram(Z)

График рассеивания и график древовидной схемы, кажется, показывают два кластера в данных.

Кластеризируйте данные с помощью порога 3 для коэффициента несоответствия и смотрящий на глубину 4 ниже каждого узла. Постройте получившиеся кластеры.

T = cluster(Z,'cutoff',3,'Depth',4);
gscatter(X(:,1),X(:,2),T)

cluster идентифицирует два кластера в данных.

Выполните агломерационную кластеризацию на fisheriris набор данных с помощью 'distance' как критерий определения кластеров. Визуализируйте кластерные присвоения данных.

Загрузите fisheriris набор данных.

load fisheriris

Визуализируйте 2D график рассеивания разновидностей использования данных как сгруппированная переменная. Задайте цвета маркера и символы маркера для трех различных разновидностей.

gscatter(meas(:,1),meas(:,2),species,'rgb','do*')
title("Actual Clusters of Fisher's Iris Data")

Создайте иерархическое кластерное дерево с помощью 'average' метод и 'chebychev' метрика.

Z = linkage(meas,'average','chebychev');

Кластеризируйте данные с помощью порога 1,5 для 'distance' критерий.

T = cluster(Z,'cutoff',1.5,'Criterion','distance')
T = 150×1

     2
     2
     2
     2
     2
     2
     2
     2
     2
     2
      ⋮

T содержит числа, которые соответствуют кластерным присвоениям. Найдите количество классов что cluster идентифицирует.

length(unique(T))
ans = 3

cluster идентифицирует три класса для заданных значений cutoff и Criterion.

Визуализируйте 2D график рассеивания кластеризирующихся результатов с помощью T как сгруппированная переменная. Задайте цвета маркера и символы маркера для трех различных классов.

gscatter(meas(:,1),meas(:,2),T,'rgb','do*')
title("Cluster Assignments of Fisher's Iris Data")

Кластеризация правильно идентифицирует setosa класс (класс 2) как принадлежащий отличному кластеру, но плохо различает versicolor и virginica классы (классы 1 и 3, соответственно). Обратите внимание на то, что график рассеивания помечает классы с помощью чисел, содержавшихся в T.

Найдите максимум трех кластеров в fisheriris набор данных и сравнивает кластерные присвоения цветов к их известной классификации.

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

load fisheriris

Создайте иерархическое кластерное дерево с помощью 'average' метод и 'chebychev' метрика.

Z = linkage(meas,'average','chebychev');

Найдите максимум трех кластеров в данных.

T = cluster(Z,'maxclust',3);

Создайте график древовидной схемы Z. Чтобы видеть эти три кластера, используйте 'ColorThreshold' с сокращением на полпути между третьими последними и предпредпоследними рычажными устройствами.

cutoff = median([Z(end-2,3) Z(end-1,3)]);
dendrogram(Z,'ColorThreshold',cutoff)

Отобразите последние две строки Z чтобы видеть, как эти три кластера объединены в один. linkage комбинирует 293-й (синий) кластер с 297-м (красным) кластером, чтобы сформировать 298-й кластер с рычажным устройством 1.7583. linkage затем комбинирует 296-й (зеленый) кластер с 298-м кластером.

lastTwo = Z(end-1:end,:)
lastTwo = 2×3

  293.0000  297.0000    1.7583
  296.0000  298.0000    3.4445

Смотрите, как кластерные присвоения соответствуют трем разновидностям. Например, один из кластеров содержит 50 цветы вторых разновидностей и 40 цветы третьих разновидностей.

crosstab(T,species)
ans = 3×3

     0     0    10
     0    50    40
    50     0     0

Случайным образом сгенерируйте выборочные данные с 20 000 наблюдений.

rng('default') % For reproducibility
X = rand(20000,3);

Создайте иерархическое кластерное дерево с помощью ward метод рычажного устройства. В этом случае, 'SaveMemory' опция clusterdata функция установлена в 'on' по умолчанию. В общем случае задайте оптимальное значение для 'SaveMemory' на основе размерностей X и доступная память.

Z = linkage(X,'ward');

Кластеризируйте данные максимум в четырех групп и постройте результат.

c = cluster(Z,'Maxclust',4);
scatter3(X(:,1),X(:,2),X(:,3),10,c)

cluster идентифицирует четыре группы в данных.

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

свернуть все

Агломерационное иерархическое кластерное дерево, которое является выходом linkage функция, заданная как числовая матрица. Для матрицы входных данных X со строками m (или наблюдения), linkage возвращается (m – 1)-by-3 матричный Z. Для объяснения как linkage создает кластерное дерево, смотрите Z.

Пример: Z = linkage(X), где X матрица входных данных

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

Порог для определения кластеров, заданных как положительная скалярная величина или вектор положительных скалярных величин. cluster использование C как порог или для высот или для коэффициентов несоответствия узлов, в зависимости от criterion для определения кластеров в иерархическом кластерном дереве.

  • Если критерием определения кластеров является 'distance', затем cluster группируют все листы в или ниже узла в кластер, при условии, что высота узла меньше C.

  • Если критерием определения кластеров является 'inconsistent', затем inconsistent значения узла и всех его подузлов должны быть меньше C для cluster сгруппировать их в кластер. cluster начинается с корня кластерного древовидного Z и понижают через дерево, пока оно не сталкивается с узлом чей inconsistent значение меньше порога C, и чьи подузлы (или потомки) имеют противоречивые значения меньше, чем C. Затем cluster группируют все листы в или ниже узла в кластер (или одиночный элемент, если сам узел является листом). cluster следует за каждой ветвью в дереве, пока все вершины не находятся в кластерах.

Пример: cluster(Z,'Cutoff',0.5)

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

Глубина для вычисления противоречивых значений, заданных в виде числа. cluster оценивает противоречивые значения, смотря на глубину D ниже каждого узла.

Пример: cluster(Z,'Cutoff',0.5,'Depth',3)

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

Критерий определения кластеров, заданных как 'inconsistent' или 'distance'.

Если критерием определения кластеров является 'distance', затем cluster группируют все листы в или ниже узла в кластер (или одиночный элемент, если сам узел является листом), при условии, что высота узла меньше C. Высота узла в дереве представляет расстояние между двумя подузлами, которые объединены в том узле. Определение 'distance' результаты в кластерах, которые соответствуют горизонтальному срезу dendrogram график Z.

Если критерием определения кластеров является 'inconsistent', затем cluster группирует узел и все его подузлы в кластер, при условии, что коэффициенты несоответствия (или inconsistent значения) узла и подузлов меньше C. Определение 'inconsistent' эквивалентно cluster(Z,'Cutoff',C).

Пример: cluster(Z,'Cutoff',0.5,'Criterion','distance')

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

Максимальное количество кластеров, чтобы сформироваться, заданный как положительное целое число или вектор положительных целых чисел. cluster создает максимум N кластеры, с помощью 'distance' как критерий определения кластеров. Высота каждого узла в дереве представляет расстояние между этими двумя подузлами, объединенными в том узле. cluster находит наименьшую высоту, на которой горизонталь прорубила дерево, оставит N или меньше кластеров. Смотрите Задают Произвольные Кластеры для получения дополнительной информации.

Пример: cluster(Z,'MaxClust',5)

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

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

свернуть все

Кластерное присвоение, возвращенное как числовой вектор или матрица. Для (m – 1)-by-3 иерархический кластерный древовидный Z (выход linkage учитывая вход XT содержит кластерные присвоения строк m (наблюдения) за X.

Размер T зависит от соответствующего размера C или N.

  • Если C положительная скалярная величина, затем T вектор длины m.

  • Если N положительное целое число, затем T вектор длины m.

  • Если C длина вектор l положительных скалярных величин, затем T m-by-l матрица с одним столбцом на значение в C.

  • Если N длина вектор l положительных целых чисел, затем T m-by-l матрица с одним столбцом на значение в N.

Альтернативная функциональность

Если у вас есть матрица входных данных X, можно использовать clusterdata выполнить агломерационную кластеризацию и возвратить кластерные индексы для каждого наблюдения (строка) в X. clusterdata функция выполняет все необходимые шаги для вас, таким образом, вы не должны выполнять pdist, linkage, и cluster функции отдельно.

Представлено до R2006a