и посмотреть медиа
Análisis de datos - DA SQL
и посмотреть медиа
Análisis de datos: SQL, Python.
Análisis de datos: SQL, Python.
bot de IA para clonar texto a voz y voz en Telegram. Cree audio utilizando la red neuronal de forma rápida y fácil.
Acerca del análisis de datos: bases de datos, SQL, Python y más para analistas.
Сегментация с помощью K-means на Python Предположим, что надо сегментировать банковские точки продаж по признакам: ▶️Число клиентов ▶️Доход (млн руб.) ▶️Конверсия в продукты ▶️Среднее время обслуживания (мин) ▶️Жалобы на 1000 клиентов ▶️Число конкурентов рядом Вообще, сегментация через k-means осуществляется по принципу "чем меньше расстояние между значениями, тем лучше". То есть этот метод не различает контекст и будет просто объединять максимально похожие друг на друга точки в одну группу. Это не скоринг, где точки будут отсортированы по рейтингу. И результаты сегментации надо будет интерпретировать уже вручную в зависимости от того, что получится. 🟠В нашем контексте это будет полезно для того, чтобы определить, какие паттерны вообще существуют и что делать. То есть может получиться образцовая группа, где высокий доход, низкие жалобы и высокая конверсия. Вторая группа может иметь много клиентов, но медленное обслуживание и высокие жалобы. И в этом случае для второй группы надо будет решать специфические проблемы, например, как эти точки разгрузить. А третья группа может иметь мало клиентов и мало конкурентов - это уже другой пул проблем и задач. 🟠Итак, приступим. Сначала как обычно импортируем библиотеки и подключаемся к источнику данных. Также нужно будет отдельно выделить признаки для сегментации в датафрейм: import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn.cluster import KMeans ###### #ИСТОЧНИК ДАННЫХ + СОЗДАНИЕ DF ###### features = [ 'clients', 'income_mln', 'conversion_pct', 'service_time_min', 'complaints_per_1k', 'competitors_nearby' ] X = df[features] Затем важный шаг - нормализация данных. Она приводит все данные к одному масштабу. Это особенно важно в нашем случае, потому что все признаки у нас имеют разные единицы измерения. И чтобы не происходило смешивания, этот метод приводит каждое значение к "общему знаменателю", рассчитывая среднее и стандартное отклонение по каждому столбцу. scaler = StandardScaler() X_scaled = scaler.fit_transform(X) Наконец, запускаем саму сегментацию. Для этого нужно настроить сам алгоритм. То есть указать количество кластеров (пусть будет n_clusters=4), проставить random_state (чтобы алгоритм всегда выдавал один и тот же результат, начиная с одной точки) и указать число повторений (n_init=10) для бОльшей точности. И затем этот алгоритм применить уже к нормализованным данным (X_scaled): kmeans = KMeans(n_clusters=4, random_state=42, n_init=10) clusters = kmeans.fit_predict(X_scaled) df['cluster'] = clusters print(df.groupby('cluster')[features].mean().round(2)) В итоге получится 4 группы точек продаж, сгруппированных по ранее указанным признакам. Для каждой группы будет указано среднее значение каждого признака. Если захочется вывести id конкретных точек в каждой группе, то можно написать: for cluster_id in sorted(df['cluster'].unique()): ids = df[df['cluster'] == cluster_id]['branch_id'].tolist() print(f"Кластер {cluster_id}: {ids}") Выведет 4 списка (по 1 на группу), где будут указаны номера точек продаж.
Открыть канал и посмотреть медиаSolo los usuarios registrados pueden compartir su opinión.
¡Sé el primero en compartir tu experiencia con este recurso!