Müşteri Segmentleri
Coddy'nin Machine Learning Journey'sinin Denetimsiz Öğrenme bölümünün bir parçası. Ders 39 / 51.
Bu bölüm, kümeleri kullanarak ruh hâline göre eşleştirilmiş bir çalma listesi oluşturmayı ele alıyor:
Önce segmentler: insanların harekete geçebileceği kümeler. Bir hostel iki özelliği ölçeklendirdi ve konuklarını kümelere ayırdı:
Gerçek birimler, bir segmentin nasıl olduğunu söyler. Ölçeklendirilmiş merkezi, onu diğerlerinden neyin ayırdığını gösterir: her özellik, ortalama konuğa göre standart sapma cinsinden.
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))Bu, şunu yazdırır:
[[ 1.3 -0.7]
[-0.7 -0.7]
[-0.7 1.4]]Her satırdaki 0'dan en uzak sayı, segmentini belirtir. 0. satır 1.3 std daha uzun süre kalır: sırt çantalı gezginler. 2. satır 1.4 std daha erken rezervasyon yapar: okul gezileri.
Görev
OrtaBir tiyatro, 166 üyesini tanımak istiyor. Program, age,ticket_price gibi segmentlere ayırmak için kullanılacak özellikleri okur.
- Bu sütunları ölçeklendir, başlangıç kodundaki yardımcı işlevle
best_k(X)segmente kümele ve sayıyı yazdır. - En büyükten başlayarak her segmentin boyutunu ve adını yazdır: merkezindeki 0'dan en uzak özellik,
highveyalowve ne kadar uzak olduğu.
Başka bir tiyatro için 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)Kendin dene
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
# Her tiyatro üyesi için bir satır
members = pd.read_csv("theatre.csv")
# Yaş, ticket_price gibi bölümleme için kullanılacak özellikler
features = input().split(",")
# Silhouette Scores'a göre: X için 2 ile 6 arasındaki en iyi siluet skoruna sahip k
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
# 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ölgeleri3Kümeleri Yorumlama
Kümelerin ProfiliGerçek Birimlerde MerkezlerKümeler ve Bilinen EtiketlerK-Means Ne Zaman Başarısız OlurÖzet: Çay Tadımı9Kümeler İş Başında
Müşteri SegmentleriÖzellik Olarak KümelerGörüntü RenkleriTekrar: Çalma Listesi Ruh HâlleriKendi başına pratik yap: Online Python derleyicisi