Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаба 3-4 / Praktika_3_4_7501_Kiryanova.docx
Скачиваний:
6
Добавлен:
08.04.2022
Размер:
686.01 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра биотехнических систем

отчет

по практическому занятию №3

по дисциплине «Моделирование биологических процессов и систем»

Тема: Кластеризация

Вариант 8

Студентка гр. 7501

Кирьянова А.М.

Преподаватель

Скоробогатова А.И.

Санкт-Петербург

2020

Цель работы: осуществить кластеризацию данных с помощью различных иерархических методов.

Основные теоретические положения

Кластеризация (кластерный анализ) – задача разбиения множества объектов на группы, называемые кластерами. Внутри каждой группы должны оказаться «похожие» объекты, а объекты различных групп должны быть как можно более отличны.

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

Цели кластеризации:

  • Понимание данных путем выявления кластерной структуры. Разбиение выборки на группы схожих объектов позволяет упростить дальнейшую обработку данных и принятия решений, применяя к каждому кластеру свой метод анализа.

  • Сжатие данных. Если исходная выборка избыточно большая, то ее можно сократить, оставив по одному наиболее типичному представителю от каждого кластера;

  • Обнаружение новизны. Выделяются нетипичные объекты, которые не удается присоединить ни к одному из кластеров.

Этапы кластеризации:

  1. Отбор выборки объектов кластеризации.

  2. Определение множества переменных, по которым будут оцениваться объекты в выборке. При необходимости – нормализация значений переменянных.

  3. Вычисление значений меры сходства между объектами (например, расстояний).

  4. Применение метода кластерного анализа для создания групп сходных объектов (кластеров).

  5. Выбор числа кластеров.

  6. Представление результатов анализа.

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

Код программы

clc

clear

close all

%% Загрузка данных

k=8;

P1 = xlsread('clust.xlsx','Лист1','O1:O300');

P2 = xlsread('clust.xlsx','Лист1','P1:P300');

%% Нормирование

P1 = P1';

P2 = P2';

m = mean(P1);

sko = std(P1);

P11 = zeros(1,300);

for i = 1:300

P11(1,i) = (P1(1,i)-m)/sko;

end

m = mean(P2);

sko = std(P2);

P22 = zeros(1,300);

for i = 1:300

P22(1,i) = (P2(1,i)-m)/sko;

end

%% Создание общей матрицы

P=[P11' P22'];

%% Скаттерограмма на основании idx

figure()

idx = kmeans(P,3);

gscatter(P11,P22,idx,'rbm');

title('Скаттерограмма');

legend('Cluster 1','Cluster 2','Cluster 3','Location','best')

legend('boxoff')

%% Иерархический метод

tree1 = linkage(P,'average');

tree2 = linkage(P,'complete');

tree3= linkage(P,'weighted');

tree4 = linkage(P,'single');

tree5 = linkage(P,'ward');

%tree6 = linkage(P,'centroid');

%tree7 = linkage(P,'median');

figure()

D1=dendrogram(tree1,'Orientation','left','ColorThreshold','default');

set(D1,'LineWidth',2)

title('Average')

figure()

D2=dendrogram(tree2,'Orientation','left','ColorThreshold','default');

set(D2,'LineWidth',2)

title('Complete')

figure()

D3=dendrogram(tree3,'Orientation','left','ColorThreshold','default');

set(D3,'LineWidth',2)

title('Weighted')

figure()

D3=dendrogram(tree4,'Orientation','left','ColorThreshold','default');

set(D3,'LineWidth',2)

title('Single')

figure()

D3=dendrogram(tree5,'Orientation','left','ColorThreshold','default');

set(D3,'LineWidth',2)

title('Ward')

%% Метки кластеров и скаттерограммы

c1 = cluster(tree1,'Maxclust',4);

figure()

gscatter(P(:,1),P(:,2),c1,[1 0 0;0.75, 0, 0.9;0 1 0;0 1 1]);

legend('Cluster 1','Cluster 2','Cluster 3','Cluster 4','Location','best')

legend('boxoff')

title('Скаттерограмма относительно метода кластеризации Average');

c2 = cluster(tree2,'Maxclust', 3);

figure()

gscatter(P(:,1),P(:,2),c2,'grb');

legend('Cluster 1','Cluster 2','Cluster 3','Location','best')

legend('boxoff')

title('Скаттерограмма относительно метода кластеризации Complete');

c3 = cluster(tree3,'Maxclust', 2);

figure()

gscatter(P(:,1),P(:,2),c3,'cr');

legend('Cluster 1','Cluster 2','Location','best')

legend('boxoff')

title('Скаттерограмма относительно метода кластеризации Weighted');

c4 = cluster(tree4,'Maxclust', 2);

figure()

gscatter(P(:,1),P(:,2),c4,'cr');

legend('Cluster 1','Cluster 2','Location','best')

legend('boxoff')

title('Скаттерограмма относительно метода кластеризации Single');

c5 = cluster(tree5,'Maxclust', 2);

figure()

gscatter(P(:,1),P(:,2),c5,'cr');

legend('Cluster 1','Cluster 2','Location','best')

legend('boxoff')

title('Скаттерограмма относительно метода кластеризации Ward')

Обработка результатов эксперимента

Чтобы кластеризовать данные, предварительно их необходимо нормализовать по формуле стандартного z-распределения со средним, равным 0, и стандартным отклонением, равным 1:

где r – исходные данные; m – среднее значение по признаку; s – стандартное отклонение по признаку.

Затем построим скатерограмму пронормированных данных относительно параметра idz, рассчитанного функцией MATLAB kmean(), которая разделяет данные на количество кластеров, заданное пользователем (в нашем случае 3), с помощью k++ алгоритма (means++ algorithm k). Алгоритм работы реализуется следующим образом:

  1. Из выборки данных X выбирается случайное однородное значение, которое принимается за центральное (центроид) и обозначается c1.

  2. Вычисляется расстояние от каждого объекта до c1. Расстояние между cj и наблюдением m обозначается как d(xm,cj).

  3. Следующий центроид c2 выбирается наугад с вероятностью

В результате получается скаттерограмма, представленная на рисунке 1.

Рисунок 1 – Скаттерограмма, полученная с помощью k++ алгоритма

Далее проведем иерархическую кластеризацию различными методами, которые представлены на рисунке 2.

Рисунок 2 – Методы иерархической кластеризации, предлагаемые документацией MATLAB

Для использования методов, представленных на рисунке 2, используется функция linkage() c указанием выбранного метода.

Соседние файлы в папке Лаба 3-4