Menu
CoddyTech

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:

80 lagu sebagai titik, valensi membentang ke samping dan energi ke atas, dalam empat kelompok yang ditemukan dan dinamai oleh k-means: tegang di kiri atas, senang di kanan atas, sedih di kiri bawah, tenang di kanan bawah

Pertama, segmen: kelompok orang yang bisa ditindaklanjuti. Sebuah hostel menskalakan dua fitur dan mengelompokkan tamunya:

150 tamu hostel, jumlah malam menginap pada sumbu mendatar dan jumlah hari pemesanan lebih awal pada sumbu tegak, dalam tiga segmen: rombongan sekolah yang memesan beberapa bulan sebelumnya, tamu akhir pekan dengan masa inap singkat, backpacker dengan masa inap panjang yang memesan mendekati tanggal menginap

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.

challenge icon

Tantangan

Sedang

Sebuah teater ingin mengetahui lebih banyak tentang 166 anggotanya. Program membaca fitur yang akan digunakan untuk segmentasi, seperti age,ticket_price.

  1. Skalakan kolom-kolom tersebut, kelompokkan menjadi best_k(X) segmen dengan helper dari kode awal, lalu cetak jumlahnya.
  2. Urutkan dari yang terbesar, lalu cetak ukuran dan nama setiap segmen: fitur pada pusat segmen yang paling jauh dari 0, high atau low, 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
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