E-ticaret müşterilerini makine öğrenmesi ile gruplara ayırdığım ilk ML projem.
Kaggle'dan aldığım 541 bin satırlık veri setiyle çalıştım. Müşterileri RFM analizi yapıp K-Means ile 4 gruba ayırdım. Bazı müşteriler çok para harcıyor, bazıları bir kez gelip kayboluyor - işte bunları otomatik olarak gruplandırdım.
customer_segmentation/
├── data/
│ └── OnlineRetail.csv
├── notebooks/
│ └── customer_segmentation_analysis.ipynb
└── README.md
Python kütüphanelerini kur:
pip install pandas numpy matplotlib seaborn scikit-learn jupyterJupyter'ı başlat:
jupyter notebook- Kaynak: Online Retail Dataset - Kaggle
- İçerik: İngiltere merkezli bir e-ticaret şirketinin 2010-2011 arası satış kayıtları
- Boyut: 541,909 satır, 8 sütun
- Temizlik sonrası: 397,884 satır, 4,338 müşteri
Her müşteri için 3 şey hesapladım:
- Recency: Ne kadar yakın zamanda geldi? (son alışverişten bu yana kaç gün geçti)
- Frequency: Ne sıklıkla geliyor? (toplam kaç kez alışveriş yaptı)
- Monetary: Ne kadar para harcıyor?
RFM değerlerini kullanarak müşterileri otomatik olarak 4 gruba ayırdım. K-Means algoritması benzer müşterileri aynı gruba koyuyor.
4 grup buldum:
- Ortalama £190,863 harcamış
- 827 kez alışveriş yapmışlar
- En değerli grup
- 5,807 kez alışveriş (çok aktifler)
- Ortalama £70,925 harcama
- Normal müşteriler
- Ortalama £2,092 harcama
- Toplam müşterilerin %75'i
- 247 gün önce gelmişler (8 ay)
- Düşük harcama
- Geri kazanılmalı
- Sadece 10 müşteri (Şampiyon + VIP) toplam gelirin yaklaşık %40'ını oluşturuyor
- 1,080 müşteri 8 aydan fazla süredir alışveriş yapmamış
- En büyük grup Standart müşteriler (%75)
- Python
- Pandas (veri işleme)
- NumPy (hesaplamalar)
- Matplotlib & Seaborn (grafikler)
- Scikit-learn (K-Means)
- Jupyter Notebook
- Veriyi yükledim ve inceledim
- Eksik değerleri ve hatalı kayıtları temizledim (144K satır silindi)
- Her müşteri için RFM değerlerini hesapladım
- StandardScaler ile veriyi normalize ettim (farklı ölçekler problemi)
- Elbow Method ile optimal küme sayısını buldum (K=4)
- K-Means algoritmasını uyguladım
- Sonuçları görselleştirdim ve yorumladım
- GitHub: @rabiasn
- LinkedIn: rabia-kalay