Segmen Pelanggan
Termasuk bagian Pembelajaran Tanpa Pengawasan dalam perjalanan Machine Learning di Coddy. Pelajaran 39 dari 51.
Bab ini menerapkan klaster, hingga menghasilkan daftar putar yang dipetakan berdasarkan suasana hati:
Pertama, segmen: kelompok orang yang bisa ditindaklanjuti. Sebuah hostel menskalakan dua fitur dan mengelompokkan tamunya:
Satuan asli menunjukkan karakteristik sebuah segmen. Pusatnya setelah penskalaan menunjukkan hal yang membedakannya: setiap fitur dalam std dari rata-rata tamu.
X = StandardScaler().fit_transform(guests[["nights", "days_ahead"]])
km = KMeans(n_clusters=3, n_init=10, random_state=0).fit(X)
print(km.cluster_centers_.round(1))Ini mencetak:
[[ 1.3 -0.7]
[-0.7 -0.7]
[-0.7 1.4]]Nomor pada setiap baris yang paling jauh dari 0 menunjukkan segmennya. Baris 0 memiliki durasi 1.3 std lebih lama: backpackers. Baris 2 memesan 1.4 std lebih awal: school trips.
Tantangan
SedangSebuah teater ingin mengetahui lebih banyak tentang 166 anggotanya. Program membaca fitur yang akan digunakan untuk segmentasi, seperti age,ticket_price.
- Skalakan kolom-kolom tersebut, kelompokkan menjadi
best_k(X)segmen dengan helper dari kode awal, lalu cetak jumlahnya. - Urutkan dari yang terbesar, lalu cetak ukuran dan nama setiap segmen: fitur pada pusat segmen yang paling jauh dari 0,
highataulow, dan seberapa jauh.
Untuk teater lain dan age,shows_per_year:
4 segments
57 members: high shows_per_year (1.2 std from average)
52 members: low shows_per_year (1.0 std from average)
40 members: low age (1.4 std from average)
32 members: high age (1.5 std from average)Coba sendiri
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
# Satu baris untuk setiap anggota teater
members = pd.read_csv("theatre.csv")
# Fitur untuk pengelompokan, seperti age,ticket_price
features = input().split(",")
# Dari Silhouette Scores: k antara 2 dan 6 dengan skor silhouette terbaik untuk X
def best_k(X):
best, best_score = 2, -1
for k in range(2, 7):
labels = KMeans(n_clusters=k, n_init=10, random_state=0).fit_predict(X)
score = silhouette_score(X, labels)
if score > best_score:
best, best_score = k, score
return best
# 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