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ı.
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.
Görev
ZorProgram, ağacın nereden kesileceğini okur; başlangıç kodu başlıklı bir grafik hazırlar.
- Özellikleri ölçeklendir ve ağacı burada ward yöntemiyle kes. Kaç segment oluşturduğunu yazdır.
- 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.
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.- 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 Cve grafiği:
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
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
1Grupları Bulma
Etiketler Olmadan ÖğrenmeBenzerliği ÖlçmeK-Means'i Elle Uygulamascikit-learn ile K-MeansÖzet: Spor Salonu Üyeleri7Uygulamada PCA
64 Boyutu GörmekBileşenleri Örüntü Olarak GörmekSıkıştır ve Yeniden OluşturModelden Önce PCATekrar: Yüz Tarayıcı10Proje: Rakam Kaşifi
Rakamları İncelePCA ile KüçültRakamları KümeleKümelere Ad VerAykırı Olanları Bul2k Sayısını Seçme
AtaletDirsek YöntemiSilüet PuanlarıKümeleme Öncesi ÖlçeklemeÖzet: Teslimat BölgeleriKendi başına pratik yap: Online Python derleyicisi