Segmen Belanja
Termasuk bagian Pembelajaran Tanpa Pengawasan dalam perjalanan Machine Learning di Coddy. Pelajaran 48 dari 51.
Sebuah toko tanaman online hanya mengetahui 240 pelanggannya dari perilaku mereka: jumlah pesanan per tahun, ukuran keranjang, persentase pembelian saat diskon, dan jumlah hari sejak pesanan terakhir.
Tidak ada yang memberi label pada mereka. Pemiliknya menginginkan beberapa segmen yang bisa ia jelaskan dengan kata-kata sederhana, dan email untuk menarik kembali pelanggan yang menjauh.
Gunakan kesepakatan dua method untuk menentukan k: pohon Ward menyarankannya, lalu silhouette memeriksanya dengan membandingkannya dengan tetangga-tetangganya. Kemudian, baca setiap segmen dalam satuan sebenarnya.
Tantangan
SulitProgram membaca titik pemotongan pohon; kode awal menyiapkan grafik dengan judul.
- Skalakan fitur dan potong pohon Ward pada titik tersebut. Cetak jumlah segmen yang dihasilkan.
- Cetak skor silhouette k-means (3 desimal) untuk nilai k tersebut dan setiap nilai di sebelahnya, lalu cetak nilai k terbaik.
- Latih ulang dengan nilai tersebut ke dalam
plants["segment"]. Urutkan dari yang terbesar, beri huruf pada setiap segmen dan cetak rata-ratanya dalam satuan asli; lalu cetak segmen yang pesanan terakhirnya paling lama. - Buat scatter plot setiap segmen dengan label hurufnya; tampilkan legenda, lalu tampilkan grafik.
Untuk toko lain, potong pada 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 Cdan grafiknya:
Lalu Coddy menjelaskan tokomu.
Coba sendiri
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
# Satu baris untuk setiap pelanggan toko tanaman
plants = pd.read_csv("plants.csv")
features = ["orders_per_year", "avg_basket_eur", "sale_share_pct", "days_since_order"]
# Ketinggian tempat pemilik memotong pohon toko, dibaca dari dendrogramnya (3 segmen atau lebih)
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)")
# Tulis kodemu di bawah ini
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pembelajaran Tanpa Pengawasan
1Menemukan Kelompok
Belajar Tanpa LabelMengukur KemiripanK-Means secara ManualK-Means dengan scikit-learnRangkuman: Anggota Gym4Pengelompokan Hierarkis
Penggabungan Langkah demi LangkahModel AglomeratifDendrogramRingkasan: Ras Anjing7PCA dalam Praktik
Melihat 64 DimensiKomponen sebagai PolaKompres dan RekonstruksiPCA Sebelum ModelRangkuman: Pemindai Wajah10Proyek: Penjelajah Digit
Amati DigitnyaPerkecil dengan PCAKelompokkan DigitBeri Nama pada KelompokTemukan yang Tidak BiasaLatihan sendiri: Compiler Python online