Menu
CoddyTech

Segmenty klientów

Część sekcji Uczenie nienadzorowane ścieżki Machine Learning w Coddy. Lekcja 39 z 51.

W tym rozdziale wykorzystasz klastry, aż po playlistę dopasowaną do nastroju:

80 utworów jako kropki, walencja rośnie w prawo, a energia w górę; cztery grupy znalezione i nazwane przez k-means: napięte w lewym górnym rogu, radosne w prawym górnym rogu, smutne w lewym dolnym rogu, spokojne w prawym dolnym rogu

Najpierw segmenty: grupy ludzi, na które można oddziaływać. Hostel przeskalował dwie cechy i podzielił swoich gości na grupy:

150 gości hostelu, liczba nocy na pobyt rośnie w poziomie, a liczba dni od rezerwacji do przyjazdu rośnie w pionie; trzy segmenty: wycieczki szkolne rezerwujące pobyt z kilkumiesięcznym wyprzedzeniem, osoby spędzające weekendy na krótkich pobytach, podróżnicy z plecakami na długich pobytach rezerwujący późno

Rzeczywiste jednostki pokazują, jaki jest dany segment. Jego przeskalowany środek pokazuje, co go wyróżnia: każdą cechę w jednostkach odchylenia standardowego od średniej liczby gości.

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))

To wypisuje:

[[ 1.3 -0.7]
 [-0.7 -0.7]
 [-0.7  1.4]]

Liczba w każdym wierszu najbardziej oddalona od 0 wskazuje jego segment. Wiersz 0 utrzymuje się o 1.3 std dłużej: turyści z plecakami. Wiersz 2 rezerwuje o 1.4 std wcześniej: wycieczki szkolne.

challenge icon

Wyzwanie

Średni

Teatr chce poznać swoich 166 członków. Program odczytuje cechy, według których należy podzielić ich na segmenty, takie jak age,ticket_price.

  1. Przeskaluj te kolumny, podziel na segmenty best_k(X) za pomocą funkcji pomocniczej z kodu początkowego i wypisz ich liczbę.
  2. Wypisuj segmenty w kolejności od największego: rozmiar i nazwę każdego segmentu — cechę jego środka najbardziej oddaloną od 0, high lub low, oraz odległość.

Dla innego teatru i 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)

Spróbuj swoich sił

import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

# Jeden wiersz na każdego członka teatru
members = pd.read_csv("theatre.csv")
# Cechy, według których przeprowadzana jest segmentacja, takie jak age,ticket_price
features = input().split(",")


# Na podstawie wskaźników sylwetki: k od 2 do 6 z najlepszym wynikiem dla X
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


# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Uczenie nienadzorowane

Poćwicz samodzielnie: Kompilator Python online