К примеру, представьте, что у вас есть набор данных о покупках клиентов в интернет-магазине, но у вас нет информации о том, какие из них являются "постоянными" клиентами, а какие – "разовыми". Применив алгоритмы группировки, такие как K-средние, мы можем разбить клиентов на различные группы на основе их покупательского поведения, что в дальнейшем позволит разработать целевые маркетинговые стратегии.
Основные алгоритмы группировки
Существует несколько популярных алгоритмов, которые помогут вам в поиске закономерностей в неразмеченных данных. Давайте рассмотрим некоторые из них.
1. K-средние: Это один из самых популярных и простых в использовании алгоритмов. Он работает по принципу разбиения данных на K групп, где в каждой группе данные имеют наименьшее значение расстояния до центроидов (средних точек групп). Пример кода для применения K-средних в Python с использованием библиотеки scikit-learn выглядит следующим образом:
python
from sklearn.cluster import KMeans
import numpy as np
# Пример данных
data = np.array([[1, 2], [1, 4], [1, 0],
................ [4, 2], [4, 4], [4, 0]])
................
# Создание модели K-средние
kmeans = KMeans(n_clusters=2, random_state=0).fit(data)
# Получение групп
clusters = kmeans.labels_
print(clusters)
2. Иерархическая группировка: Этот метод позволяет создать иерархическую структуру групп, что дает возможность визуализировать отношения между ними. Алгоритм делится на два основных типа: агломеративный (снизу вверх) и дивизивный (сверху вниз). Иерархическую группировку можно реализовать с помощью функции `linkage` из библиотеки SciPy.
python
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt
# Пример данных
data = np.array([[1, 2], [1, 4], [1, 0],
................ [4, 2], [4, 4], [4, 0]])
# Создание иерархических групп
linked = linkage(data, 'single')
# Построение дендрограммы
dendrogram(linked)
plt.show()
3. DBSCAN (кластеризация с учетом плотности): Этот алгоритм подходит для группировки с учетом плотности, что позволяет ему эффективно находить кластеры произвольной формы. Он хорошо справляется с шумом и выделяет области с различной плотностью.
python
from sklearn.cluster import DBSCAN
# Пример данных
data = np.array([[1, 2], [1, 4], [1, 0],
................ [4, 2], [4, 4], [4, 0],