Menu
CoddyTech

Segmenty zakupowe

Część sekcji Uczenie nienadzorowane ścieżki Machine Learning w Coddy. Lekcja 48 z 51.

Internetowy sklep z roślinami zna swoich 240 klientów tylko na podstawie ich zachowań: liczby zamówień rocznie, wielkości koszyka, udziału zakupów podczas wyprzedaży i liczby dni od ostatniego zamówienia.

240 klientów sklepu z roślinami jako szare kropki, liczba zamówień rocznie rośnie w poziomie, a średnia wartość koszyka w euro w pionie; bez etykiet: gęste skupisko przy niskich wartościach koszyka i niewielka grupa klientów wydających dużo w pobliżu lewego górnego rogu

Nikt ich nie oznaczył. Właścicielka chce mieć kilka segmentów, które może opisać prostymi słowami, oraz e-mail zachęcający do powrotu dla tego, który się oddalił.

Niech dwie metody uzgodnią wartość k: drzewo wardowskie ją sugeruje, a sylwetka sprawdza ją w porównaniu z sąsiednimi wartościami. Następnie odczytaj każdy segment w rzeczywistych jednostkach.

challenge icon

Wyzwanie

Trudny

Program odczytuje miejsce cięcia drzewa; kod początkowy przygotowuje wykres z tytułem.

  1. Przeskaluj cechy i przetnij tam drzewo Ward. Wypisz, ile segmentów powstało.
  2. Wypisz współczynnik silhouette dla k-means (3 miejsca po przecinku) dla tego k i każdego sąsiedniego, a następnie najlepsze k.
  3. Dopasuj model ponownie z tym k do plants["segment"]. Zacznij od największego segmentu, oznacz każdy literą i wypisz średnie w rzeczywistych jednostkach; następnie wypisz segment, którego ostatnie zamówienie było najdawniej.
  4. Utwórz wykres punktowy każdego segmentu, oznaczonego jego literą; dodaj legendę i wyświetl wykres.

Dla innego sklepu przetnij przy 8:

Tree cut at 8.0: 3 segments
Silhouette at k = 2: 0.573
Silhouette at k = 3: 0.675
Silhouette at k = 4: 0.630
Best k: 3
A (70): 8.6 orders a year, 29 EUR baskets, 15% on sale, last order 23 days ago
B (50): 3.1 orders a year, 22 EUR baskets, 60% on sale, last order 53 days ago
C (30): 1.8 orders a year, 89 EUR baskets, 10% on sale, last order 148 days ago
Win-back email: segment C

a oto jego wykres:

Segmenty innego sklepu zatytułowane Plant Shop Segments: A, 70 klientów składających 5–14 zamówień rocznie, B, 50 klientów z niewielką liczbą zamówień i małymi koszykami, C, 30 klientów z niewielką liczbą zamówień i dużymi koszykami u góry, oraz legenda

Następnie Coddy opisze Twój wynik.

Spróbuj swoich sił

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
from scipy.cluster.hierarchy import linkage, fcluster

# Jeden wiersz na każdego klienta sklepu z roślinami
plants = pd.read_csv("plants.csv")
features = ["orders_per_year", "avg_basket_eur", "sale_share_pct", "days_since_order"]

# Wysokość, na której właściciel przecina drzewo sklepu, odczytana z dendrogramu (3 lub więcej segmentów)
cut = float(input())

fig, ax = plt.subplots()
ax.set_title("Plant Shop Segments")
ax.set_xlabel("Orders per year")
ax.set_ylabel("Average basket (EUR)")

# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Uczenie nienadzorowane

Poćwicz samodzielnie: Kompilator Python online