Menu
CoddyTech

Alışveriş Segmentleri

Coddy'nin Machine Learning Journey'sinin Denetimsiz Öğrenme bölümünün bir parçası. Ders 48 / 51.

Çevrimiçi bir bitki mağazası, 240 müşterisini yalnızca yaptıklarına göre tanır: yılda verdikleri sipariş sayısı, sepet tutarı, indirimli ürünlerden satın alınanların oranı ve son siparişlerinden bu yana geçen gün sayısı.

Bitki mağazasının 240 müşterisi gri noktalarla gösteriliyor; yatay eksende yıldaki sipariş sayısı, dikey eksende avro cinsinden ortalama sepet tutarı yer alıyor ve etiket yok: düşük sepet tutarlarında yoğun bir bant ve sol üstte az sayıda yüksek harcama yapan müşteri grubu

Kimse onları etiketlememiş. Sahibi, sade bir dille tanımlayabileceği birkaç segment ve uzaklaşan müşteriye gönderebileceği bir geri kazanım e-postası istiyor.

İki yöntemin k üzerinde uzlaşmasını sağlayın: bir bölme ağacı bunu önerir, silüet ise komşularına göre kontrol eder. Ardından her segmenti gerçek birimlerle okuyun.

challenge icon

Görev

Zor

Program, ağacın nereden kesileceğini okur; başlangıç kodu başlıklı bir grafik hazırlar.

  1. Özellikleri ölçeklendir ve ağacı burada ward yöntemiyle kes. Kaç segment oluşturduğunu yazdır.
  2. Bu k ve her bir komşusu için k-means silüet değerini (3 ondalık basamakla), ardından en iyi k değerini yazdır.
  3. plants["segment"] içine bu değerle yeniden uydur. En büyükten başlayarak her segmente bir harf ver ve gerçek birimlerdeki ortalamalarını yazdır; ardından son siparişi en eski olanı belirt.
  4. Her segmenti harfiyle etiketlenmiş olarak dağılım grafiğinde göster; lejantı ekle ve grafiği göster.

Başka bir mağaza için 8 noktasında kes:

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

ve grafiği:

Plant Shop Segments başlıklı başka bir mağazanın segmentleri: A, yılda 5 ila 14 sipariş veren 70 müşteri; B, az sipariş veren ve küçük sepetli 50 müşteri; C, az sipariş veren ve büyük sepetli, grafiğin üst kısmına yakın 30 müşteri; lejant ile

Ardından Coddy seninkini açıklar.

Kendin dene

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

# Bitki dükkânının her müşterisi için bir satır
plants = pd.read_csv("plants.csv")
features = ["orders_per_year", "avg_basket_eur", "sale_share_pct", "days_since_order"]

# Dükkân sahibinin ağacı kestiği yükseklik; dendrogramdan okunur (3 veya daha fazla segment)
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)")

# Kodunuzu aşağıya yazın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Denetimsiz Öğrenme bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi