Menu
CoddyTech

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.

240 pelanggan toko tanaman ditampilkan sebagai titik abu-abu, jumlah pesanan per tahun pada sumbu mendatar dan rata-rata keranjang dalam euro pada sumbu tegak, tanpa label: pita padat pada nilai keranjang rendah dan sekelompok kecil pembelanja bernilai tinggi di dekat kiri atas

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.

challenge icon

Tantangan

Sulit

Program membaca titik pemotongan pohon; kode awal menyiapkan grafik dengan judul.

  1. Skalakan fitur dan potong pohon Ward pada titik tersebut. Cetak jumlah segmen yang dihasilkan.
  2. Cetak skor silhouette k-means (3 desimal) untuk nilai k tersebut dan setiap nilai di sebelahnya, lalu cetak nilai k terbaik.
  3. 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.
  4. 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 C

dan grafiknya:

Segmen toko lain berjudul Plant Shop Segments: A, 70 pelanggan dengan 5 hingga 14 pesanan per tahun, B, 50 pelanggan dengan sedikit pesanan dan keranjang belanja kecil, C, 30 pelanggan dengan sedikit pesanan dan keranjang belanja besar di dekat bagian atas, beserta legenda

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
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pembelajaran Tanpa Pengawasan

Latihan sendiri: Compiler Python online