Агломеративная кластеризация в машинном обучении
Агломеративная кластеризация основана на иерархической кластеризации, которая используется для формирования иерархии кластеров. Это – один из типов алгоритмов кластеризации в машинном обучении. В отличие от алгоритмов кластеризации K-средних и DBSCAN, формирование иерархии кластеров не очень распространено, но очень эффективно. Если вы никогда раньше не использовали этот алгоритм, эта статья для вас. В этой статье я познакомлю вас с агломеративной кластеризацией в машинном обучении и ее реализацией с использованием Python.
Агломеративная кластеризация
Кластеризация – это метод машинного обучения, который используется для группировки похожих экземпляров. Этот метод используется в задачах машинного обучения без учителя, когда набор данных не помечен, и ваша задача состоит в том, чтобы сгруппировать похожие экземпляры. Алгоритмы кластеризации в основном используются в маркетинговых кампаниях, когда бизнес хочет найти самую прибыльную группу клиентов из своей базы данных всех клиентов.
Агломеративная кластеризация – это один из алгоритмов кластеризации, в котором процесс группировки похожих экземпляров начинается с создания нескольких групп, где каждая группа содержит один объект на начальном этапе, затем он находит две наиболее похожие группы, объединяет их, повторяет процесс до тех пор, пока не получит единую группу наиболее похожих экземпляров. Например, представьте пузырьки, плавающие на воде и прикрепляющиеся, и в конце процесса вы увидите большую группу пузырьков.
Вот некоторые из преимуществ использования этого алгоритма кластеризации:
- Очень хорошо адаптируется к большому количеству случаев.
- Может захватывать кластеры различной формы.
- Образует гибкие и информативные кластеры.
- Его также можно использовать с любым попарным расстоянием.
Надеемся, вы теперь поняли, что такое агломеративная кластеризация в машинном обучении. В следующем разделе я расскажу вам о его реализации с использованием языка программирования Python.
Агломеративная кластеризация с использованием Python
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns sns.set() data = pd.read_csv("https://biconsult.ru/img/datascience-ml-ai/Agglomerative-Clustering-in-Machine-Learning/customers.csv") print(data.head())
Для реализации алгоритма агломеративной кластеризации мы будем использовать библиотеку scikit-learn на Python. Итак, давайте начнем с импорта всех необходимых библиотек Python и набора данных, которые нам нужны для реализации этого алгоритма:
Так выглядит набор данных:
CustomerID |
Gender |
Age |
Annual Income (k$) |
Spending Score (1-100) |
1 |
Male |
19 |
15 |
39 |
2 |
Male |
21 |
15 |
81 |
3 |
Female |
20 |
16 |
6 |
4 |
Female |
23 |
16 |
77 |
5 |
Female |
31 |
17 |
40 |
Здесь мы можем создавать кластеры на основе доходов и расходов клиентов. Итак, давайте подготовим данные соответствующим образом:
data["Income"] = data[["Annual Income (k$)"]] data["Spending"] = data[["Spending Score (1-100)"]] data = data[["Income", "Spending"]] print(data.head())
Income Spending
0 15 39
1 15 81
2 16 6
3 16 77
4 17 40
Ниже показано, как можно реализовать алгоритм агломеративной кластеризации с помощью библиотеки scikit-learn в Python:
from sklearn.cluster import AgglomerativeClustering model = AgglomerativeClustering() model.fit(data) pred = model.fit_predict(data) plt.style.use('seaborn-whitegrid') plt.figure(figsize=(12, 10)) plt.scatter(data["Income"], data["Spending"], c=pred, cmap='rainbow', alpha=0.9) plt.show()
Резюме
Вот как можно реализовать алгоритм агломеративной кластеризации с помощью языка программирования Python. Это – один из алгоритмов кластеризации, в котором процесс группировки похожих экземпляров начинается с создания нескольких групп, где каждая группа содержит одну сущность на начальном этапе, затем он находит две наиболее похожие группы, объединяет их, повторяет процесс до тех пор, пока не получит одну группу наиболее похожих экземпляров. Надеемся, вам понравилась эта статья о введении в агломеративную кластеризацию в машинном обучении и ее реализации с использованием Python.