Makine Öğrenmesi
Etiket analizi
Küme etiketlerini analiz edersin.
Segment profilleri
Kümeler ancak yorumlandığında değerlidir. Her segmentin özgün birimdeki ortalamaları çıkarılır ve segmentlere ad verilir:
for k in range(3):
uye = X[km.labels_ == k]
print(k, len(uye), uye.mean(axis=0).round(0))
# ör. düşük harcama + az ziyaret -> "ara sıra gelen"
# yüksek harcama + az ziyaret -> "büyük sepetçi"
# orta harcama + çok ziyaret -> "sadık sık gelen"
Ölçekli merkezler yerine özgün birimdeki ortalamalar raporlanır; pazarlama ekibi z-skoru değil TL konuşur.
Segment adlarını koda bağlamak
Küme numaraları her çalıştırmada değişebileceği için adlar numaraya sabit yazılmaz; merkezlerin özelliklerinden türetilir. Örneğin ziyaret ortalaması en yüksek küme "sadık" olarak seçilir:
ort = np.array([X[km.labels_ == k].mean(axis=0) for k in range(3)])
sadik = ort[:, 1].argmax() # ziyareti en yüksek
buyuk = ort[:, 2].argmax() # sepeti en yüksek
print(sadik, buyuk)
Bu yaklaşım, model yeniden eğitildiğinde adların yanlış kümeye kaymasını önler.
Uygulama Profilleri çıkar
Her segmentin özgün birimdeki ortalamalarını ort dizisinde topla ve np.round(ort, 0) ile yazdır. Ardından ziyareti en yüksek ve sepeti en yüksek segmentlerin numaralarını aynı satırda yazdır.
Örnek çözümü göster
import numpy as np
rng = np.random.default_rng(5)
n = 400
grup = rng.integers(0, 3, n)
harcama = np.array([300, 1500, 800])[grup] + rng.normal(0, 120, n)
ziyaret = np.array([2, 4, 12])[grup] + rng.normal(0, 1.2, n)
sepet = harcama / np.maximum(ziyaret, 1)
X = np.column_stack([harcama, ziyaret, sepet])
from sklearn.preprocessing import StandardScaler
Xs = StandardScaler().fit_transform(X)
from sklearn.cluster import KMeans
km = KMeans(n_clusters=3, n_init=10, random_state=0).fit(Xs)
ort = np.array([X[km.labels_ == k].mean(axis=0) for k in range(3)])
print(np.round(ort, 0))
print(ort[:, 1].argmax(), ort[:, 2].argmax())
Kendini test et
-
Ölçekli verideki merkezleri raporlamanın sorunu nedir?
- Değerler TL ya da ziyaret cinsinden okunamaz
- Yanlıştırlar
- Hesaplanamazlar
- Sorun yoktur
Cevabı göster
Değerler TL ya da ziyaret cinsinden okunamaz — z-skorları göreli konumu anlatır; iş dili için özgün birim gerekir.
-
Ziyaret ortalaması en yüksek segmenti bul.
sadik = ort[:, 1].____()
Cevabı göster
sadik = ort[:, 1].argmax()
-
Profilleri adlarla eşleştir.
- Az harcama, az ziyaret
- Ara sıra gelen
- Çok harcama, az ziyaret
- Büyük sepetçi
- Orta harcama, çok ziyaret
- Sadık sık gelen
- ort[:, 1].argmax()
- Ada bağlama
Sıradaki ders: Sonuç yazdırma