Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЕХНОЛОГИЯ ОБРАБОТКИ ИНФОРМАЦИИ | Лабораторная 1.docx
Скачиваний:
10
Добавлен:
01.07.2025
Размер:
835 Кб
Скачать
☆

С помощью функции fcm

Дендрограмма

Для иерархического кластерного анализа удобным средством визуализации результатов кластерного анализа является функция dendrogram, которая выводит дерево дендрограммы.

dendrogram(Z,0,'colorthreshold','default') генерирует график дендрограммы иерархического бинарного кластерного дерева Z– матрицы (M-1)х3, сгенерированной функцией linkage где M– число наблюдений в исходном наборе данных.

Дендрограмма содержит линии в форме U, содержащие объекты иерархического дерева.

Высота каждого U представляет расстояние между двумя связанными объектами.

Каждой группе узлов дендрограммы, для которого функция linkage меньше определенного порога, назначается уникальный цвет.

Пример. Покажем результаты иерархического кластерного анализа ирисов Фишера в виде дендрограммы.

load fisheriris;

Y=pdist(meas);

Z = linkage(Y,'complete');

dendrogram(Z,0,'colorthreshold','default');

На рис. можно увидеть 3 кластера

Рис. Дендрограмма для примера

Функция silhouette

silhouette(X,clust, метрика) выводит график матрицы данных X, с кластерами, определенными в векторе clust.

Строки X соответствуют наблюдениям, столбцы соответствуют признакам. clust – числовой вектор, содержащий номер кластера для каждой точки.

Значения метрики:

'Euclidean' эвклидово расстояние

'sqEuclidean' квадратичное эвклидово расстояние (по умолчанию)

'cityblock' расстояние городских кварталов – сумма абсолютных разностей координат

s = silhouette(X,clust, метрика) вычисляет значения силуэта в векторе s, но не выводит график силуэтов.

Значение силуэта каждой точки есть мера ее близости к точкам своего класса в сравнении с мерой близости к точкам других классов и находится в диапазоне от -1 до +1.

Значение силуэта для i- ой точки, Si, определяется по формуле:

Si = (bi-ai)/ max(ai,bi), где ai – среднее расстояние от i- ой точки до других точек того же кластера, а bi - минимальное среднее расстояние от i – ой точки до точек других кластеров.

Пример. Вывод силуэтов для результатов иерархической классификации ирисов Фишера

load fisheriris

Z=linkage(meas,'average');

clust=cluster(Z, 3);

silhouette(meas,clust);

График показан на рис.

Рис. График силуэта для примера

cophenet - расчет коэффициента качества разбиения исходных данных на кластеры (чем его значение ближе к 1, тем лучше выполнено разбиение на кластеры)

c = cophenet(Z,Y) – вычисляет коэффициент качества для иерархического кластерного дерева, представленного переменной Z (выходной переменной функции linkage). Y содержит попарные расстояния (выходная переменная функции pdist).

Коэффициент c определяется формулой:

,

где

Yij – расстояние между объектами i и j в Y;

Zij – расстояние между объектами i и j из Z(:,3).

y и z – среднее из Y и Z(:,3), соответственно.

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

confusionmat Вычисление матрицы различий

C = confusionmat(индексы фактические, индексы предсказанные) возвращает матрицу отличий C между известными и предсказанными номерами точек. Оба параметра – массивы одной длины и одного типа (целые, строковые). C – квадратная матрица с размерами, равными числу различных элементов в массивов параметров. C(i,j) – это количество наблюдений, которые фактически находятся в кластере i, но предсказаны в кластере j.

Пример. Оценка числа верно классифицированных наблюдений по методу k-means в ирисах Фишера.

load fisheriris

% Классифицирующие значения

for i=1:50

Y(i,1)=1;

end

for i=51:100

Y(i,1)=2;

end

for i=101:150

Y(i,1)=3;

end

Y_t = kmeans(meas,3);

% Вычисление матрицы confusion

C_t = confusionmat(Y,Y_t);

0 0 50

48 2 0

14 36 0

Исходя из этого, можно сказать, что 50 объектов 1 класса отнесены алгоритмом к 3 классу, 48 объектов 2 класса отнесены алгоритмом к 1 классу, 36 объектов 2 класса отнесены алгоритмом ко 2 класса.

Можно сделать пересчет в проценты, используя функцию bsxfun.

C = bsxfun(fun,A,B) применяет поэлементную операцию, определенную функцией fun к массивам A и B. fun может быть одной из встроенных функций:

plus

Сложение

minus

Вычитание

times

Умножение

rdivide

Деление

power

Возведение в степень

eq

Равенство

ne

Неравенство

gt

Больше чем

ge

Больше или равно чем

lt

Меньше чем

le

Меньше или равно чем

В продолжение примера

% Оценка матрицы confusion для каждого класса в % по отношению к реальной классификации

C_tp = bsxfun(@rdivide,C_t,sum(C_tp,2)) * 100;