Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы по ОМО 2025 / Baraeva_Elizaveta_lb2.doc
Скачиваний:
0
Добавлен:
09.09.2026
Размер:
1 Мб
Скачать
☆

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

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

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

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

Кафедра МО ЭВМ

отчет

по лабораторной работе №2

по дисциплине «Основы машинного обучения»

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

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

Бараева Е. Н.

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

Жангиров Т. Р.

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

2025

Цель работы.

Изучить методы кластеризации данных (K-Means, DBSCAN, иерархическая), научится анализировать кластеризованные данные, выявлять выбросы, анализировать пересечение, интерпретировать полученные результаты, визуализировать данные. Также сравнить эти методы.

Задание.

Вариант 12W

  1. Подготовка наборов данных:

1.1. Загрузите наборы.

1.2. Проверьте корректность загрузки.

1.3. Постройте диаграмму рассеяния набора данных. Опишите форму данных, и особенности в данных.

1.4. Подготовьте наборы данных проведя стандартизация или нормировку данных. Обоснуйте выбор операции.

  1. K-Means:

2.1. Проведите исследование оптимального количества кластеров методов локтя. Сделайте выводы, о наиболее подходящем количестве кластеров.

2.2. Проведите исследование оптимального количества кластеров методом силуэта. Сделайте выводы, о наиболее подходящем количестве кластеров.

2.3. Проведите кластеризацию алгоритмом K-means, с выбранным оптимальным количеством кластеров.

2.4. Постройте диаграмму рассеяния результатов кластеризации с выделением разным цветом разных кластеров.

2.5. Постройте диаграмму Вороного для результатов кластеризации. На диаграмме отметьте центроиды полученных кластеров.

2.6. Постройте для каждого признака диаграмму “box-plot” или “violin-plot”, с разделением по кластерам. Сделайте выводы о разделении кластеров и успешности применения кластеризации K-means к набору данных.

2.7. Рассчитайте для каждого кластера кол-во точек, среднее, СКО, минимум и максимум. Сопоставьте результаты с построенными графиками.

  1. DBSCAN:

3.1. Подберите параметры алгоритма DBSCAN, которые на ваш взгляд дают наилучшие результаты. Опишите процесс (почему и как изменяли параметры) подбора параметров.

3.2. Постройте диаграмму рассеяния результатов кластеризации с выделением разным цветом разных кластеров.

3.3. Сделайте выводы об успешности кластеризации.

  1. Иерархическая кластеризация:

4.1. Проведите иерархическую кластеризацию для параметра linkage указанного в вашем варианте, используя количество кластеров, полученных в п.2 или п.3. Постройте дендрограмму. Сделайте выводы, о разделении кластеров и необходимости изменить количество кластеров (если считаете, что необходимо изменить количество кластеров, то повторите кластеризацию с другим количеством кластеров).

4.2. Постройте диаграмму рассеяния результатов кластеризации с выделением разным цветом разных кластеров.

4.3. Сравните результаты кластеризации с результатами, полученными в п.2 и п.3. Сделайте выводы о том, какой метод кластеризации подходит под каждый из наборов данных.

Выполнение работы.

  1. Подготовка наборов данных:

    1. Загрузите наборы.

Для загрузки наборов необходимо использовать метод read_csv из библиотеки Pandas. В метод передаем название файла. Реализация данного функционала представлена в Листинге 1.1.1.

Листинг 1.1.1 – Загрузка данных из файла

import pandas as pd

df_blobs = pd.read_csv("lab2_blobs.csv")

df_circles = pd.read_csv("lab2_circles.csv")

1.2. Проверьте корректность загрузки.

Вызвав метод head, можно проверить корректность загруженных данных (по умолчанию он возвращает 5 первых строк). Для этого выведем их. Реализация приведена в Листинге 1.2.1, а результат в Таблице 1.2.2 и Таблице 1.2.3.

Листинг 1.2.1 – Вызов метода head

print(df_blobs.head())

print(df_circles.head())

Таблица 1.2.2 – Результат вывода первых пяти записей датафрейма df_blobs

# x

y

0

0.9232

0.3500

1

-0.5394

0.1214

2

0.5548

1.8120

3

-0.1227

0.3402

4

0.0411

-0.0905

Таблица 1.2.3 – Результат вывода первых пяти записей датафрейма df_circles

# x

y

0

0.4192

0.9737

1

-0.3424

0.9707

2

0.5116

-0.1549

3

0.4426

-0.0733

4

-0.3582

-0.1086

Можно заметить, что перед x стоит #. Для того чтобы ее убрать воспользуемся функцией rename и затем снова проверим вывод. Реализация приведена в Листинге 1.2.4, а результат в Таблице 1.2.5 и Таблице 1.2.6.

Листинг 1.2.4 – Изменение названия столбца функцией rename

df_circles = df_circles.rename(columns={'# x': 'x'})

df_blobs = df_blobs.rename(columns={'# x': 'x'})

Таблица 1.2.5 – Результат вывода первых пяти записей датафрейма df_blobs

x

y

0

0.9232

0.3500

1

-0.5394

0.1214

2

0.5548

1.8120

3

-0.1227

0.3402

4

0.0411

-0.0905

Таблица 1.2.6 – Результат вывода первых пяти записей датафрейма df_circles

x

y

0

0.4192

0.9737

1

-0.3424

0.9707

2

0.5116

-0.1549

3

0.4426

-0.0733

4

-0.3582

-0.1086

1.3. Постройте диаграмму рассеяния набора данных. Опишите форму данных, и особенности в данных.

Для начала подключим библиотеки Seaborn и Matplotlib. Для каждого графика создадим объект plt.figure. Затем с помощью sns.scatterplot построим диаграммы рассеяния. Передадим датасеты и названия осей. После зададим заголовки и отобразим диаграммы. Реализация представлена в Листинге 1.3.1. Диаграммы изображены на Рисунке 1.3.2 и Рисунке 1.3.3.

Листинг 1.3.1 – Реализация построения диаграмм рассеяния

import seaborn as sns

import matplotlib.pyplot as plt

plt.figure()

sns.scatterplot(data=df_blobs, x='x', y='y')

plt.title('Диаграмма рассеяния (blobs)')

plt.show()

plt.figure()

sns.scatterplot(data=df_circles, x='x', y='y')

plt.title('Диаграмма рассеяния (circles)')

plt.show()

Рисунок 1.3.2 – Диаграмма рассеяния датафрейма df_blobs

Рисунок 1.3.3 – Диаграмма рассеяния датафрейма df_circles

Данные на Рисунке 1.3.2 сгруппированы в виде трех отдельных групп точек. Это указывает на кластеризованную структуру данных. В левой нижней группе точки расположены плотнее, чем в двух других. Данные на Рисунке 1.3.3 расположены в виде эллипсов. Можно четко выделить два слоя – внутренний и внешний. Это указывает на нелинейные зависимости в данных. Также во внутреннем круге виден разрыв по вертикали.

Соседние файлы в папке Лабы по ОМО 2025