Makine Öğrenmesi
Veri hazırlama
Kümeleme için veriyi hazırlarsın.
Proje: müşteri segmentasyonu
Bu projede bir mağazanın 400 müşterisini aylık harcama, ziyaret sayısı ve ortalama sepet tutarına göre gruplara ayıracağız. Etiket yok; amaç pazarlama ekibine anlamlı segmentler sunmak.
harcama = ... # aylık TL
ziyaret = ... # aylık ziyaret
sepet = harcama / ziyaret
X = np.column_stack([harcama, ziyaret, sepet])
Sepet tutarı türetilmiş bir özelliktir: aynı harcamayı az ziyaretle yapan "büyük sepetçi" ile sık gelen "küçük sepetçi"yi ayırır.
Hazırlık
Önce özelliklerin aralıklarına bakılır, sonra her biri ortalama 0, standart sapma 1 olacak biçimde ölçeklenir. Kümeleme etiketsiz olduğu için eğitim/test bölmesi yapılmaz; tüm müşteriler kümelenir.
print(X.min(axis=0).round(0), X.max(axis=0).round(0))
Xs = StandardScaler().fit_transform(X)
print(Xs.std(axis=0).round(2)) # [1. 1. 1.]
Yeni müşteriler gelince aynı ölçekleyici ve km.predict kullanılacak; bu yüzden ölçekleyici nesnesi saklanmalıdır.
Uygulama Müşteri verisini incele
X'in şeklini, ardından sütun ortalamalarını np.round(..., 0) ile yazdır. StandardScaler ile ölçekleyip ölçekli verinin sütun standart sapmalarını np.round(..., 2) ile 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
print(X.shape)
print(np.round(X.mean(axis=0), 0))
Xs = StandardScaler().fit_transform(X)
print(np.round(Xs.std(axis=0), 2))
Kendini test et
-
Bu veride neden ölçekleme şarttır?
- Etiket olmadığı için
- Gerekmez
- Harcama yüzlerce TL, ziyaret tek haneli; mesafeyi harcama domine eder
- Kümeleme ölçekle hızlanır
Cevabı göster
Harcama yüzlerce TL, ziyaret tek haneli; mesafeyi harcama domine eder — Ölçeksiz KMeans pratikte yalnızca harcamaya göre kümeler.
-
Özellikleri ölçekle.
Xs = StandardScaler().____(X)
Cevabı göster
Xs = StandardScaler().fit_transform(X)
-
Özellikleri eşleştir.
- harcama
- Aylık TL
- ziyaret
- Aylık gelme sayısı
- sepet
- Türetilmiş: TL / ziyaret
- Xs
- Ölçekli matris
Sıradaki ders: KMeans eğitimi