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:
Najpierw segmenty: grupy ludzi, na które można oddziaływać. Hostel przeskalował dwie cechy i podzielił swoich gości na grupy:
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.
Wyzwanie
ŚredniTeatr 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.
- Przeskaluj te kolumny, podziel na segmenty
best_k(X)za pomocą funkcji pomocniczej z kodu początkowego i wypisz ich liczbę. - Wypisuj segmenty w kolejności od największego: rozmiar i nazwę każdego segmentu — cechę jego środka najbardziej oddaloną od 0,
highlublow, 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
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Uczenie nienadzorowane
1Znajdowanie grup
Uczenie się bez etykietMierzenie podobieństwaK-Means krok po krokuK-Means w scikit-learnPodsumowanie: członkowie siłowni4Klasteryzacja hierarchiczna
Łączenie krok po krokuModele aglomeracyjneDendrogramyPodsumowanie: rasy psów7PCA w praktyce
Poznajemy 64 wymiarySkładowe jako wzorceKompresuj i odtwórzPCA przed modelemPodsumowanie: skaner twarzy10Projekt: Odkrywca cyfr
Przyjrzyj się cyfromZmniejsz wymiar za pomocą PCAGrupuj cyfryNazwij grupyZnajdź te nietypowe2Wybór k
InercjaMetoda łokciaWyniki silhouetteSkalowanie przed klasteryzacjąPodsumowanie: strefy dostawPoćwicz samodzielnie: Kompilator Python online