Skip to content

Repository files navigation

🧩 Анализ сегментации клиентов (Customer Segmentation)

Датасет: https://www.kaggle.com/datasets/vishakhdapat/customer-segmentation-clustering


📸 Превью проекта

Интерфейс Streamlit Процесс разработки
Streamlit Preview Code Preview

1. Подготовка данных

Выполненные шаги:

Преобразовал дату 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)

2. Исследовательский анализ данных (EDA)

Распределения и boxplot-графики

С помощью 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 раза ниже).

3. Feature Engineering (создание новых признаков)

Создана группа по средним тратам в зависимости от образования:

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 — простые коммуникации и базовые предложения

4. Анализ по возрастным группам

Выявленный паттерн:

  • Доход растёт почти линейно с возрастом.
  • Пик дохода — 70+ лет, а не 40–50 как обычно.
  • Молодые (18–29) — минимальный доход.
  • Клиенты 60+ — наиболее платёжеспособные.

Возможные причины: накопления, наследство, ориентация продукта на зрелую аудиторию.

Рекомендации:

  • 50+ лет: премиальные продукты, персональные сервисы, программы лояльности.
  • 18–39 лет: рассрочки, образовательные кампании, “молодёжные” скидки.

5. Масштабирование и кластеризация

  • Все признаки приведены к единому масштабу.
  • Оптимальное количество кластеров определено с помощью Elbow Method и подтверждено коэффициентом силуэта — выбрано k = 4.
Метод Визуализация
Elbow Method Elbow
Silhouette Score Silhouette
PCA (визуализация кластеров) PCA

6. Интерпретация кластеров

🟢 Кластер 0 — “Богатые, но неактивные”

  • 💰 Доход: 77K | Расходы: 1250
  • 👴 Возраст: около 58 лет
  • 🛒 Предпочитают офлайн
  • 📅 Recency = 70 (давно не покупали)

Вывод: обеспеченные пожилые клиенты, снизившие активность. Рекомендация: напомнить о бренде (email, бонусы, повторные предложения).


🔴 Кластер 1 — “Малообеспеченные, неактивные”

  • 💰 Доход: 34K | Расходы: 103
  • 🛒 Низкая активность во всех каналах
  • 📅 Recency = 49

Вывод: низкая покупательная способность, интерес есть, но без покупок. Рекомендация: акции, рассрочки, персональные предложения.


🟢 Кластер 2 — “Лояльные и активные”

  • 💰 Доход: 70K | Расходы: 1100
  • 🛒 Часто покупают онлайн и офлайн
  • 📅 Recency = 18.9 (покупали недавно)

Вывод: идеальные клиенты — богатые, активные и лояльные. Рекомендация: VIP-программы, удержание, бонусы за активность.


🟠 Кластер 3 — “Онлайн-активные среднего уровня”

  • 💰 Доход: 57K | Расходы: 811
  • 🌐 Очень активны онлайн (7.6 покупок, 6.6 визитов)
  • 📅 Recency = 55 (активность снизилась)

Вывод: цифрово-ориентированные клиенты, интерес ослаб. Рекомендация: ремаркетинг, персональные email-кампании.


7. Итоговый обзор

Кластер Описание Приоритет Действие
🟢 2 Лояльные и активные 🔝 Высокий Удержание и поощрение
🔵 0 Богатые, но неактивные 🟡 Средний Реактивация
🟠 3 Онлайн-активные 🟠 Средний Ремаркетинг
🔴 1 Малообеспеченные 🔴 Низкий Минимальные кампании

8. Инструменты и библиотеки

  • Python
  • Pandas, NumPy
  • Seaborn, Matplotlib
  • Scikit-learn — KMeans, StandardScaler, PCA
  • Joblib — сохранение модели
  • Streamlit — визуальный интерфейс

About

| END2END ml app

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages