Машинное обучение - страница 10
5. Повторение шагов 3 и 4: Процессы присвоения точек к кластерам и пересчета центроидов повторяются до тех пор, пока не будет достигнуто определенное условие остановки. Обычно это ограничение числа итераций или малая изменчивость центроидов.
6. Вывод результатов: По завершении алгоритма получаем набор кластеров, где каждая точка данных относится к определенному кластеру.
Формула, используемая в методе K-средних для определения принадлежности точки кластеру, выглядит следующим образом:
d(x, c) = sqrt((x1 – c1)^2 + (x2 – c2)^2 + … + (xn – cn)^2)
где:
– d(x, c) представляет собой расстояние между точкой данных x и центроидом c,
– x1, x2, …, xn представляют координаты точки данных x,
– c1, c2, …, cn представляют координаты центроида c.
Формула использует Евклидово расстояние для вычисления расстояния между точкой данных и центроидом. Она измеряет разницу между каждой координатой точки данных и соответствующей координатой центроида, затем суммирует квадраты этих разностей и извлекает квадратный корень из суммы.
Это расстояние помогает определить, к какому кластеру должна быть отнесена точка данных. Чем ближе точка к центроиду, тем меньше значение расстояния, и она будет отнесена к этому кластеру.
Метод K-средних использует эту формулу для вычисления расстояния между каждой точкой данных и всеми центроидами, а затем выбирает ближайший центроид для каждой точки данных в качестве принадлежности к кластеру.
Метод K-средних является итеративным алгоритмом, который стремится минимизировать сумму квадратов расстояний между точками данных и центроидами. Он обладает простотой реализации и хорошей масштабируемостью, что делает его популярным методом для кластеризации данных в различных областях, включая бизнес, науку, медицину и другие.
Рассмотрим пример кода сегментации клиентов в банковской сфере с использованием метода K-средних (K-means). Этот метод может помочь выявить группы клиентов с общими характеристиками и поведением, что позволит банку адаптировать свои продукты и услуги под каждую группу более эффективно.
```python
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
# Загрузка данных о клиентах банка
data = pd.read_csv('customer_data.csv')
# Предобработка данных: масштабирование числовых признаков
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data[['Age', 'Income', 'Balance']])
# Определение количества кластеров
k = 3
# Создание и обучение модели K-средних
kmeans = KMeans(n_clusters=k, random_state=42)
kmeans.fit(scaled_data)
# Получение меток кластеров для каждого клиента
cluster_labels = kmeans.labels_
# Добавление меток кластеров в исходные данные
data['Cluster'] = cluster_labels
# Вывод результатов сегментации
for cluster in range(k):
cluster_data = data[data['Cluster'] == cluster]
print(f"Cluster {cluster}:")
print(cluster_data.describe())
print('\n')
# Описание каждого кластера:
# – Можно проанализировать средний возраст, доход и баланс по каждому кластеру
# – Определить основные характеристики и поведение клиентов в каждом кластере
```
В данном примере мы используем библиотеки pandas и scikit-learn для загрузки данных о клиентах банка, предобработки данных и применения метода K-средних. Сначала данные подвергаются масштабированию с помощью StandardScaler, чтобы привести числовые признаки к одному масштабу.
Затем мы задаем количество кластеров (в данном случае k = 3) и создаем экземпляр модели KMeans. Обучение модели происходит методом fit, где модель вычисляет центроиды кластеров, чтобы минимизировать сумму квадратов расстояний до точек данных внутри каждого кластера.