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.
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.
Wyzwanie
TrudnyProgram odczytuje miejsce cięcia drzewa; kod początkowy przygotowuje wykres z tytułem.
- Przeskaluj cechy i przetnij tam drzewo Ward. Wypisz, ile segmentów powstało.
- Wypisz współczynnik silhouette dla k-means (3 miejsca po przecinku) dla tego k i każdego sąsiedniego, a następnie najlepsze k.
- 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. - 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 Ca oto jego wykres:
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
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Uczenie nienadzorowane
1Znajdowanie grup
Uczenie się bez etykietMierzenie podobieństwaK-Means krok po krokuK-Means w scikit-learnPodsumowanie: członkowie siłowni4Klasteryzacja hierarchiczna
Łączenie krok po krokuModele aglomeracyjneDendrogramyPodsumowanie: rasy psów7PCA w praktyce
Poznajemy 64 wymiarySkładowe jako wzorceKompresuj i odtwórzPCA przed modelemPodsumowanie: skaner twarzy10Projekt: Odkrywca cyfr
Przyjrzyj się cyfromZmniejsz wymiar za pomocą PCAGrupuj cyfryNazwij grupyZnajdź te nietypowe2Wybór k
InercjaMetoda łokciaWyniki silhouetteSkalowanie przed klasteryzacjąPodsumowanie: strefy dostawPoćwicz samodzielnie: Kompilator Python online