Датасет: https://www.kaggle.com/datasets/vishakhdapat/customer-segmentation-clustering
- 🇬🇧 English version
- 🧑💻 NOTES
| Интерфейс Streamlit | Процесс разработки |
|---|---|
![]() |
![]() |
Выполненные шаги:
Преобразовал дату Dt_Customer в формат datetime:
df["Dt_Customer"] = pd.to_datetime(df["Dt_Customer"], dayfirst=True)-
Удалил 9 пропущенных значений для чистоты данных.
-
Добавил новые признаки:
Total_Children— общее количество детей (Kidhome + Teenhome)Total_Spending— общие расходы клиента по всем категориямCustomer_Since— сколько дней клиент уже с нами (2025 - Dt_Customer)
С помощью Seaborn были построены распределения и boxplot-графики, на основе которых выявлены закономерности и гипотезы:
Образование и доход
- Люди с более высоким уровнем образования имеют, как правило, более высокий доход.
Семейное положение и расходы
- Люди, живущие одни, тратят меньше. Это может стать важным поведенческим признаком при сегментации клиентов.
| Переменные | Корреляция | Интерпретация |
|---|---|---|
| Total_Spending ↔ NumStorePurchases | 0.68 | Основные траты происходят в офлайн-магазинах. |
| Total_Spending ↔ NumWebPurchases | 0.53 | Активные покупатели покупают и онлайн, и офлайн. |
| NumStorePurchases ↔ NumWebPurchases | 0.52 | Покупатели не ограничиваются одним каналом. |
| Age ↔ Другие переменные | ~0.11–0.16 | Возраст почти не влияет на поведение клиентов. |
Вывод: Активные клиенты совершают покупки во всех каналах — это лояльные и вовлечённые покупатели.
| Образование | Семейное положение | Средний доход |
|---|---|---|
| PhD | Married | 79,244 |
| Graduation | Married | 64,176 |
| PhD | Together | 64,176 |
Наблюдения:
- Люди с Graduation имеют самые высокие доходы во всех статусах.
- PhD — стабильно высокий уровень дохода.
- Basic education — самые низкие доходы (в 2–3 раза ниже).
Создана группа по средним тратам в зависимости от образования:
group1 = df.groupby("Education")["Total_Spending"].mean().sort_values(ascending=False)Добавлен признак TotalAccepted — общее количество принятых маркетинговых предложений:
df["TotalAccepted"] = df[["AcceptedCmp1","AcceptedCmp2","AcceptedCmp3","AcceptedCmp4","AcceptedCmp5","Response"]].sum(axis=1)
df["AcceptedAny"] = df["TotalAccepted"] > 0Группировка по семейному положению:
group2 = df.groupby("Marital_Status")["AcceptedAny"].mean().sort_values(ascending=False)Выводы:
- Наиболее отзывчивые группы: Together, Married
- Менее отзывчивые: Alone, Widow
Рекомендации для маркетинга:
- Together / Married — семейные скидки, программы лояльности
- Divorced / Single — индивидуальные акции и персональные предложения
- Alone / Widow — простые коммуникации и базовые предложения
Выявленный паттерн:
- Доход растёт почти линейно с возрастом.
- Пик дохода — 70+ лет, а не 40–50 как обычно.
- Молодые (18–29) — минимальный доход.
- Клиенты 60+ — наиболее платёжеспособные.
Возможные причины: накопления, наследство, ориентация продукта на зрелую аудиторию.
Рекомендации:
- 50+ лет: премиальные продукты, персональные сервисы, программы лояльности.
- 18–39 лет: рассрочки, образовательные кампании, “молодёжные” скидки.
- Все признаки приведены к единому масштабу.
- Оптимальное количество кластеров определено с помощью Elbow Method и подтверждено коэффициентом силуэта — выбрано k = 4.
| Метод | Визуализация |
|---|---|
| Elbow Method | ![]() |
| Silhouette Score | ![]() |
| PCA (визуализация кластеров) | ![]() |
- 💰 Доход: 77K | Расходы: 1250
- 👴 Возраст: около 58 лет
- 🛒 Предпочитают офлайн
- 📅 Recency = 70 (давно не покупали)
Вывод: обеспеченные пожилые клиенты, снизившие активность. Рекомендация: напомнить о бренде (email, бонусы, повторные предложения).
- 💰 Доход: 34K | Расходы: 103
- 🛒 Низкая активность во всех каналах
- 📅 Recency = 49
Вывод: низкая покупательная способность, интерес есть, но без покупок. Рекомендация: акции, рассрочки, персональные предложения.
- 💰 Доход: 70K | Расходы: 1100
- 🛒 Часто покупают онлайн и офлайн
- 📅 Recency = 18.9 (покупали недавно)
Вывод: идеальные клиенты — богатые, активные и лояльные. Рекомендация: VIP-программы, удержание, бонусы за активность.
- 💰 Доход: 57K | Расходы: 811
- 🌐 Очень активны онлайн (7.6 покупок, 6.6 визитов)
- 📅 Recency = 55 (активность снизилась)
Вывод: цифрово-ориентированные клиенты, интерес ослаб. Рекомендация: ремаркетинг, персональные email-кампании.
| Кластер | Описание | Приоритет | Действие |
|---|---|---|---|
| 🟢 2 | Лояльные и активные | 🔝 Высокий | Удержание и поощрение |
| 🔵 0 | Богатые, но неактивные | 🟡 Средний | Реактивация |
| 🟠 3 | Онлайн-активные | 🟠 Средний | Ремаркетинг |
| 🔴 1 | Малообеспеченные | 🔴 Низкий | Минимальные кампании |
- Python
- Pandas, NumPy
- Seaborn, Matplotlib
- Scikit-learn — KMeans, StandardScaler, PCA
- Joblib — сохранение модели
- Streamlit — визуальный интерфейс




