פלחי לקוחות
חלק מהיחידה למידה בלתי מונחית במסלול ה-Machine Learning של Coddy. שיעור 39 מתוך 51.
בפרק הזה נשתמש באשכולות, עד ליצירת רשימת השמעה שממופה לפי מצב הרוח:
ראשית, פלחים: קבוצות שאפשר לפעול לפיהן. אכסניה הגדילה את קנה המידה של שני מאפיינים וחילקה את האורחים שלה לקבוצות:
היחידות המקוריות מתארות איך נראה מקטע. המרכז המותאם לקנה מידה מראה מה מייחד אותו: כל מאפיין ב-std ביחס לממוצע של האורחים.
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))זה מדפיס:
[[ 1.3 -0.7]
[-0.7 -0.7]
[-0.7 1.4]]המספר בכל שורה שהכי רחוק מ-0 מציין את המקטע שלה. שורה 0 נשארת 1.3 סטיות תקן ארוכה יותר: תרמילאים. שורה 2 מזמינה 1.4 סטיות תקן מוקדם יותר: טיולי בתי ספר.
אתגר
בינוניתיאטרון רוצה להכיר את 166 חבריו. התוכנית קוראת את המאפיינים לפילוח, כגון age,ticket_price.
- בצעו קנה מידה לעמודות האלה, חלקו לאשכולות ל־
best_k(X)פלחים בעזרת פונקציית העזר שסופקה, והדפיסו כמה יש. - מהגדול לקטן, הדפיסו את גודל כל פלח ואת שמו: המאפיין של המרכז שלו שהכי רחוק מ־0,
highאוlow, ובאיזו מידה.
עבור תיאטרון אחר ועבור 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)נסו בעצמכם
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
# שורה אחת לכל חבר בתיאטרון
members = pd.read_csv("theatre.csv")
# המאפיינים שלפיהם מבצעים חלוקה לקבוצות, כגון age,ticket_price
features = input().split(",")
# על פי ציוני הסילואט: הערך של k בין 2 ל־6 שמניב את ציון הסילואט הטוב ביותר עבור 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
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה בלתי מונחית
תרגלו בעצמכם: קומפיילר Python אונליין