Файл: Сгенерируйте набор данных и проведите его кластеризацию по методу kmeans с использованием разных метрик. Результаты кластеризации визуализируйте..docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.12.2023
Просмотров: 92
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИфедеральное государственное бюджетное образовательное учреждение высшего образования«Тольяттинский государственный университет»Институт Математики, физики и информационных технологий
Практическое задание №3по учебному курсу «Системы искусственного интеллекта 2»(наименование учебного курса)Вариант ____ (при наличии)
Тольятти 2023
Алгоритм выполнения:
[3 3 0 1 0 3 0 3 1 3 1 2 0 2 0 0 0 3 2 1 3 0 2 1 2 1 2 2 0 1 3 1 2 2 1 0 13 2 2 0 2 2 1 3 3 2 1 2 3 1 0 2 0 3 2 1 0 2 2 1 2 1 2 2 3 1 3 3 1 2 2 1 12 3 2 2 2 2 3 2 3 2 0 3 2 2 0 2 0 3 1 1 2 2 0 0 3 3 3 3 2 0 1 3 1 0 1 1 33 2 0 1 1 2 3 1 3 2 0 2 3 3 2 0 0 1 3 2 3 1 1 3 1 0 1 2 1 0 2 1 1 0 1 3 20 1 3 3 1 3 2 0 3 2 0 2 2 1 1 2 3 1 1 0 3 2 3 1 1 3 2 1 3 1 0 3 2 2 2 1 00 0 3 1 3 3 3 3 1 0 3 0 0 1 2 2 2 1 1 1 3 3 2 3 0 3 2 0 1 0 2 1 3 3 2 0 31 1 0 2 2 1 0 0 3 0 0 2 2 2 3 0 0 1 0 3 2 0 3 2 0 0 0 0 2 3 2 1 3 3 1 3 01 0 1 0 0 0 1 3 2 2 3 3 0 0 1 3 1 1 1 0 1 0 3 0 0 3 1 3 3 1 1 0 2 3 2 3 21 1 0 2 1 1 0 3 1 2 2 2 0 2 3 0 3 0 2 0 0 1 1 2 0 1 0 1 0 0 0 1 0 2 1 3 32 3 0 1 1 1 0 1 2 0 1 2 0 3 0 0 0 2 2 3 2 0 0 1 1 2 0 0 0 2 2 2 3 0 2 3 02 1 0 3 2 3 2 0 3 2 3 2 2 0 0 2 2 1 3 3 1 1 1 0 2 0 1 1 2 1 0 3 3 3 0 3 10 1 1 1 1 3 2 2 1 2 1 0 2 2 3 1 2 1 3 3 1 3 2 2 1 3 2 0 3 0 1 3 2 3 2 0 23 1 1 1 2 2 0 0 0 1 3 1 1 3 1 0 3 1 2 0 2 3 3 3 0 0 0 0 2 1 3 2 3 1 2 1 11 0 1 1 0 2 1 1 2 2 0 3 0 0 1 0 1 2 2 2 2 2 0 0 3 0 1 3 0 2 1 1 3 2 2 2 01 0 1 0 0 3 2 1 1 2 0 3 2 3 2 2 0 2 1 0 3 1 3 0 1 3 2 3 2 1 1 3 2 0 0 2 33 3 1 2 2 2 2 3 0 3 1 3 1 0 2 3 1 1 1 2 2 0 2 2 0 0 0 3 1 1 1 1 0 3 3 2 10 2 3 2 0 3 2 1 3 1 0 3 3 3 1 3 0 2 1 3 3 2 1 2 1 2 1 1 1 0 2 3 1 0 0 0 23 1 2 2 3 2 0 2 0 2 1 0 0 3 2 0 2 2 3 0 3 1 2 1 0 0 2 1 2 3 1 0 3 3 1 2 11 1 3 2 3 3 1 2 3 3 1 2 3 2 0 0 2 1 0 3 1 0 0 0 3 1 0 2 0 1 2 3 2 1 2 3 02 2 3 2 2 3 0 2 0 3 1 0 2 0 1 3 0 0 0 0 0 2 2 3 1 1 3 3 3 1 2 1 2 2 1 0 20 0 2 1 2 1 2 3 1 2 2 1 0 0 3 2 0 3 1 3 0 2 3 2 3 1 1 0 0 0 0 1 0 3 0 0 11 1 3 3 0 3 2 0 2 0 0 0 1 3 0 2 0 0 2 1 3 2 2 0 0 1 1 1 2 2 0 0 3 0 1 2 10 1 3 2 2 1 2 3 3 0 2 0 1 0 2 0 0 3 2 2 2 0 0 3 3 2 2 3 1 1 3 0 2 0 3 1 02 1 0 0 3 3 2 0 1 3 0 2 0 3 1 3 0 2 3 2 2 2 1 3 2 2 1 0 0 2 1 1 1 2 3 3 13 1 2 3 3 0 0 2 1 3 0 3 0 1 1 1 0 2 2 0 1 1 2 3 3 3 3 2 2 1 3 2 1 2 2 1 01 1 3 3 0 2 3 2 2 0 2 0 1 3 1 2 0 1 3 2 0 1 2 2 3 0 3 1 0 3 3 2 2 3 2 3 11 2 3 3 3 2 0 0 1 2 2 1 0 1 2 0 2 1 1 0 0 3 0 3 1 0 3 2 0 0 2 1 3 2 2 1 32 0 2 1 3 1 1 3 1 2 0 3 0 3 2 3 2 3 0 3 2 1 3 0 0 2 0 3 0 1 0 3 0 0 2 0 22 1 3 0 3 3 1 0 2 2 1 1 1 3 0 2 1 3 0 2 0 2 2 3 1 0 1 0 1 2 2 3 2 0 1 0 03 1 3 2 0 2 0 3 2 3 2 1 3 2 1 0 2 2 0 0 2 1 0 0 3 0 2 3 1 0 3 1 1 3 2 1 03 1 2 2 1 2 1 0 0 3 1 2 3 2 3 1 1 0 2 2 1 2 3 1 3 0 2 3 0 0 2 2 3 0 3 1 03 2 0 1 1 1 3 1 2 0 3 2 3 2 3 2 2 2 0 0 1 2 2 2 0 0 2 3 3 1 3 3 2 0 0 2 2]Мы также можем получить информацию о координатах центров кластеров с помощью атрибута cluster_centers_:# Выводим координаты центров кластеровprint(kmeans.cluster_centers_)Результат:[[-1.89957564 3.09255568][ 1.98045588 0.95089609][-2.74572633 -8.38645411][-3.11550118 -4.24537538]]3. Для визуализации результатов кластеризации мы можем использовать библиотеку matplotlib. В следующем коде мы используем метод KMeans для кластеризации и затем строим график, выделяя каждый кластер отдельным цветом и показывая центры кластеров.from sklearn.cluster import KMeansimport matplotlib.pyplot as plt# Кластеризуем данные на 4 кластераkmeans = KMeans(n_clusters=4, random_state=42).fit(X)# Получаем метки кластеров и центры кластеровlabels = kmeans.labels_centers = kmeans.cluster_centers_# Строим график, выделяя каждый кластер отдельным цветом и показывая центры кластеровplt.scatter(X[:,0], X[:,1], c=labels)plt.scatter(centers[:,0], centers[:,1], marker='*', color='r', s=300)plt.show() 4. # Кластеризация с использованием Евклидовой метрикиfrom sklearn.cluster import KMeans
kmeans_euclidean = KMeans(n_clusters=4, init='k-means++', max_iter=300, n_init=10, random_state=42)y_kmeans_euclidean = kmeans_euclidean.fit_predict(X)# Кластеризация с использованием метрики Чебышеваfrom sklearn.neighbors import DistanceMetricdist = DistanceMetric.get_metric('chebyshev')X_dist = dist.pairwise(X)kmeans_chebyshev = KMeans(n_clusters=4, init='k-means++', max_iter=300, n_init=10, random_state=42)y_kmeans_chebyshev = kmeans_chebyshev.fit_predict(X_dist)# Кластеризация с использованием метрики Манхэттенаdist = DistanceMetric.get_metric('manhattan')X_dist = dist.pairwise(X)kmeans_manhattan = KMeans(n_clusters=4, init='k-means++', max_iter=300, n_init=10, random_state=42)y_kmeans_manhattan = kmeans_manhattan.fit_predict(X_dist)5. Этап 1. На этапе генерации набора данных была использована функция make_blobs() из библиотеки sklearn.datasets. Эта функция позволяет создать набор данных с заданным количеством кластеров, центрами и стандартным отклонением. В этом случае было сгенерировано 200 объектов, распределенных на 4 кластера. Этап 2. На втором этапе была выполнена кластеризация данных с помощью алгоритма k-means, используя библиотеку sklearn.cluster. В данном случае был выбран параметр количества кластеров равный 4. Для инициализации начальных центров кластеров был использован метод k-means++, а максимальное количество итераций было установлено 300, а количество запусков — 10 для получения наилучшего результата. Этап 3. На третьем этапе была осуществлена визуализация результатов кластеризации с помощью библиотеки matplotlib. На графике было показано распределение всех точек в координатной плоскости, выделив разными цветами принадлежность каждой точки к одному из кластеров. Также были показаны центры кластеров, вычисленные в результате кластеризации. Этап 4. На четвертом этапе была повторена кластеризация данных с использованием разных метрик, таких как Евклидова, Чебышева и Манхэттена. Для расчета расстояний была использована библиотека sklearn.neighbors.DistanceMetric.get_metric(). После выполнения кластеризации для каждой метрики была получена принадлежность каждой точки к одному из четырех кластеров.
| (наименование института полностью) |
| Прикладная математика и информатика |
| (Наименование учебного структурного подразделения) |
| 09.03.03 «Прикладная информатика |
| (код и наименование направления подготовки / специальности) |
| Бизнес-информатика |
| (направленность (профиль) / специализация) |
| Обучающегося | Дё А.А. | |
| | (И.О. Фамилия) | |
| Группа | Пибп-1902а | |
| | | |
| Преподаватель | Раченко Т.А. | |
| | (И.О. Фамилия) | |
Практическое задание 3
Тема 2.5. Возможности библиотеки scikit-learn Python для реализации алгоритма k-means
ЗаданиеСгенерируйте набор данных и проведите его кластеризацию по методу k-means с использованием разных метрик. Результаты кластеризации визуализируйте.Рекомендации по выполнению заданияАлгоритм выполнения:
-
Сгенерировать набор данных, подвергаемых кластеризации, с использованием функции make_blobs(). -
Выполнить кластеризацию данных с использованием алгоритма k-means. -
Визуализировать результат кластеризации, выделив цветом принадлежность объектов к кластерам и показав центры кластеров. -
Повторить кластеризацию с использованием разных метрик (Евклида, Чебышева, расстояния Манхэттена). -
Представить текстовое описание выполнения каждого этапа работы
-
.ipynb; -
.pdf (ipynb, сохраненный в формате .pdf).
[3 3 0 1 0 3 0 3 1 3 1 2 0 2 0 0 0 3 2 1 3 0 2 1 2 1 2 2 0 1 3 1 2 2 1 0 13 2 2 0 2 2 1 3 3 2 1 2 3 1 0 2 0 3 2 1 0 2 2 1 2 1 2 2 3 1 3 3 1 2 2 1 12 3 2 2 2 2 3 2 3 2 0 3 2 2 0 2 0 3 1 1 2 2 0 0 3 3 3 3 2 0 1 3 1 0 1 1 33 2 0 1 1 2 3 1 3 2 0 2 3 3 2 0 0 1 3 2 3 1 1 3 1 0 1 2 1 0 2 1 1 0 1 3 20 1 3 3 1 3 2 0 3 2 0 2 2 1 1 2 3 1 1 0 3 2 3 1 1 3 2 1 3 1 0 3 2 2 2 1 00 0 3 1 3 3 3 3 1 0 3 0 0 1 2 2 2 1 1 1 3 3 2 3 0 3 2 0 1 0 2 1 3 3 2 0 31 1 0 2 2 1 0 0 3 0 0 2 2 2 3 0 0 1 0 3 2 0 3 2 0 0 0 0 2 3 2 1 3 3 1 3 01 0 1 0 0 0 1 3 2 2 3 3 0 0 1 3 1 1 1 0 1 0 3 0 0 3 1 3 3 1 1 0 2 3 2 3 21 1 0 2 1 1 0 3 1 2 2 2 0 2 3 0 3 0 2 0 0 1 1 2 0 1 0 1 0 0 0 1 0 2 1 3 32 3 0 1 1 1 0 1 2 0 1 2 0 3 0 0 0 2 2 3 2 0 0 1 1 2 0 0 0 2 2 2 3 0 2 3 02 1 0 3 2 3 2 0 3 2 3 2 2 0 0 2 2 1 3 3 1 1 1 0 2 0 1 1 2 1 0 3 3 3 0 3 10 1 1 1 1 3 2 2 1 2 1 0 2 2 3 1 2 1 3 3 1 3 2 2 1 3 2 0 3 0 1 3 2 3 2 0 23 1 1 1 2 2 0 0 0 1 3 1 1 3 1 0 3 1 2 0 2 3 3 3 0 0 0 0 2 1 3 2 3 1 2 1 11 0 1 1 0 2 1 1 2 2 0 3 0 0 1 0 1 2 2 2 2 2 0 0 3 0 1 3 0 2 1 1 3 2 2 2 01 0 1 0 0 3 2 1 1 2 0 3 2 3 2 2 0 2 1 0 3 1 3 0 1 3 2 3 2 1 1 3 2 0 0 2 33 3 1 2 2 2 2 3 0 3 1 3 1 0 2 3 1 1 1 2 2 0 2 2 0 0 0 3 1 1 1 1 0 3 3 2 10 2 3 2 0 3 2 1 3 1 0 3 3 3 1 3 0 2 1 3 3 2 1 2 1 2 1 1 1 0 2 3 1 0 0 0 23 1 2 2 3 2 0 2 0 2 1 0 0 3 2 0 2 2 3 0 3 1 2 1 0 0 2 1 2 3 1 0 3 3 1 2 11 1 3 2 3 3 1 2 3 3 1 2 3 2 0 0 2 1 0 3 1 0 0 0 3 1 0 2 0 1 2 3 2 1 2 3 02 2 3 2 2 3 0 2 0 3 1 0 2 0 1 3 0 0 0 0 0 2 2 3 1 1 3 3 3 1 2 1 2 2 1 0 20 0 2 1 2 1 2 3 1 2 2 1 0 0 3 2 0 3 1 3 0 2 3 2 3 1 1 0 0 0 0 1 0 3 0 0 11 1 3 3 0 3 2 0 2 0 0 0 1 3 0 2 0 0 2 1 3 2 2 0 0 1 1 1 2 2 0 0 3 0 1 2 10 1 3 2 2 1 2 3 3 0 2 0 1 0 2 0 0 3 2 2 2 0 0 3 3 2 2 3 1 1 3 0 2 0 3 1 02 1 0 0 3 3 2 0 1 3 0 2 0 3 1 3 0 2 3 2 2 2 1 3 2 2 1 0 0 2 1 1 1 2 3 3 13 1 2 3 3 0 0 2 1 3 0 3 0 1 1 1 0 2 2 0 1 1 2 3 3 3 3 2 2 1 3 2 1 2 2 1 01 1 3 3 0 2 3 2 2 0 2 0 1 3 1 2 0 1 3 2 0 1 2 2 3 0 3 1 0 3 3 2 2 3 2 3 11 2 3 3 3 2 0 0 1 2 2 1 0 1 2 0 2 1 1 0 0 3 0 3 1 0 3 2 0 0 2 1 3 2 2 1 32 0 2 1 3 1 1 3 1 2 0 3 0 3 2 3 2 3 0 3 2 1 3 0 0 2 0 3 0 1 0 3 0 0 2 0 22 1 3 0 3 3 1 0 2 2 1 1 1 3 0 2 1 3 0 2 0 2 2 3 1 0 1 0 1 2 2 3 2 0 1 0 03 1 3 2 0 2 0 3 2 3 2 1 3 2 1 0 2 2 0 0 2 1 0 0 3 0 2 3 1 0 3 1 1 3 2 1 03 1 2 2 1 2 1 0 0 3 1 2 3 2 3 1 1 0 2 2 1 2 3 1 3 0 2 3 0 0 2 2 3 0 3 1 03 2 0 1 1 1 3 1 2 0 3 2 3 2 3 2 2 2 0 0 1 2 2 2 0 0 2 3 3 1 3 3 2 0 0 2 2]Мы также можем получить информацию о координатах центров кластеров с помощью атрибута cluster_centers_:# Выводим координаты центров кластеровprint(kmeans.cluster_centers_)Результат:[[-1.89957564 3.09255568][ 1.98045588 0.95089609][-2.74572633 -8.38645411][-3.11550118 -4.24537538]]3. Для визуализации результатов кластеризации мы можем использовать библиотеку matplotlib. В следующем коде мы используем метод KMeans для кластеризации и затем строим график, выделяя каждый кластер отдельным цветом и показывая центры кластеров.from sklearn.cluster import KMeansimport matplotlib.pyplot as plt# Кластеризуем данные на 4 кластераkmeans = KMeans(n_clusters=4, random_state=42).fit(X)# Получаем метки кластеров и центры кластеровlabels = kmeans.labels_centers = kmeans.cluster_centers_# Строим график, выделяя каждый кластер отдельным цветом и показывая центры кластеровplt.scatter(X[:,0], X[:,1], c=labels)plt.scatter(centers[:,0], centers[:,1], marker='*', color='r', s=300)plt.show() 4. # Кластеризация с использованием Евклидовой метрикиfrom sklearn.cluster import KMeans
kmeans_euclidean = KMeans(n_clusters=4, init='k-means++', max_iter=300, n_init=10, random_state=42)y_kmeans_euclidean = kmeans_euclidean.fit_predict(X)# Кластеризация с использованием метрики Чебышеваfrom sklearn.neighbors import DistanceMetricdist = DistanceMetric.get_metric('chebyshev')X_dist = dist.pairwise(X)kmeans_chebyshev = KMeans(n_clusters=4, init='k-means++', max_iter=300, n_init=10, random_state=42)y_kmeans_chebyshev = kmeans_chebyshev.fit_predict(X_dist)# Кластеризация с использованием метрики Манхэттенаdist = DistanceMetric.get_metric('manhattan')X_dist = dist.pairwise(X)kmeans_manhattan = KMeans(n_clusters=4, init='k-means++', max_iter=300, n_init=10, random_state=42)y_kmeans_manhattan = kmeans_manhattan.fit_predict(X_dist)5. Этап 1. На этапе генерации набора данных была использована функция make_blobs() из библиотеки sklearn.datasets. Эта функция позволяет создать набор данных с заданным количеством кластеров, центрами и стандартным отклонением. В этом случае было сгенерировано 200 объектов, распределенных на 4 кластера. Этап 2. На втором этапе была выполнена кластеризация данных с помощью алгоритма k-means, используя библиотеку sklearn.cluster. В данном случае был выбран параметр количества кластеров равный 4. Для инициализации начальных центров кластеров был использован метод k-means++, а максимальное количество итераций было установлено 300, а количество запусков — 10 для получения наилучшего результата. Этап 3. На третьем этапе была осуществлена визуализация результатов кластеризации с помощью библиотеки matplotlib. На графике было показано распределение всех точек в координатной плоскости, выделив разными цветами принадлежность каждой точки к одному из кластеров. Также были показаны центры кластеров, вычисленные в результате кластеризации. Этап 4. На четвертом этапе была повторена кластеризация данных с использованием разных метрик, таких как Евклидова, Чебышева и Манхэттена. Для расчета расстояний была использована библиотека sklearn.neighbors.DistanceMetric.get_metric(). После выполнения кластеризации для каждой метрики была получена принадлежность каждой точки к одному из четырех кластеров.