Etiket analizi
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 67/112
- 7 dk
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.
Başlangıç kodu
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)
# buraya yazÖrnek çözüm
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())Beklenen çıktı
[[ 303. 2. 181.] [1505. 4. 422.] [ 787. 12. 65.]] 2 1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Ölçekli verideki merkezleri raporlamanın sorunu nedir?
- Değerler TL ya da ziyaret cinsinden okunamaz Doğru cevap
- Yanlıştırlar
- Hesaplanamazlar
- Sorun yoktur
Açıklama: z-skorları göreli konumu anlatır; iş dili için özgün birim gerekir.
2 Ziyaret ortalaması en yüksek segmenti bul.
sadik = ort[:, 1].____()
sadik = ort[:, 1].argmax()
Açıklama: argmax değerin değil kümenin numarasını verir.
3 Profilleri adlarla eşleştir.
| Kavram | Anlamı |
|---|---|
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 |