exponenta event banner

группа

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

Описание

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');

Figure contains an axes. The axes with title Randomly Generated Data contains an object of type scatter.

Создание иерархического дерева кластера с помощью ward СПОСОБ СВЯЗЫВАНИЯ.

Z = linkage(X,'ward');

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

dendrogram(Z)

Figure contains an axes. The axes contains 29 objects of type line.

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

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

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

Figure contains an axes. The axes contains 2 objects of type line. These objects represent 1, 2.

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

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

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

load fisheriris

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

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

Figure contains an axes. The axes with title Actual Clusters of Fisher's Iris Data contains 3 objects of type line. These objects represent setosa, versicolor, virginica.

Создание иерархического дерева кластера с помощью '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.

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

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

Figure contains an axes. The axes with title Cluster Assignments of Fisher's Iris Data contains 3 objects of type line. These objects represent 1, 2, 3.

Кластеризация правильно идентифицирует класс 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)

Figure contains an axes. The axes contains 29 objects of type line.

Отображение последних двух строк 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)

Figure contains an axes. The axes contains an object of type scatter.

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-3Z (выход linkage данный вход X), T содержит назначения кластеров 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