Menu
CoddyTech

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:

Noktalarla gösterilen 80 şarkı; yatay eksende valans, dikey eksende enerji; k-means'in bulup adlandırdığı dört grup: sol üstte gergin, sağ üstte mutlu, sol altta üzgün, sağ altta sakin

Önce segmentler: insanların harekete geçebileceği kümeler. Bir hostel iki özelliği ölçeklendirdi ve konuklarını kümelere ayırdı:

150 hostel konuğu; yatay eksende konaklama gecesi sayısı, dikey eksende rezervasyonun ne kadar önceden yapıldığı; üç segment: aylar öncesinden rezervasyon yapan okul gezileri, kısa süreli konaklayan hafta sonu konukları, geç rezervasyon yapan uzun süreli konaklayan sırt çantalı gezginler

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.

challenge icon

Görev

Orta

Bir tiyatro, 166 üyesini tanımak istiyor. Program, age,ticket_price gibi segmentlere ayırmak için kullanılacak özellikleri okur.

  1. Bu sütunları ölçeklendir, başlangıç kodundaki yardımcı işlevle best_k(X) segmente kümele ve sayıyı yazdır.
  2. En büyükten başlayarak her segmentin boyutunu ve adını yazdır: merkezindeki 0'dan en uzak özellik, high veya low ve 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
quiz iconKendini test et

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

Kendi başına pratik yap: Online Python derleyicisi