Menu
CoddyTech

בצעו סקיילינג לפני קיבוץ לאשכולות

חלק מהיחידה למידה בלתי מונחית במסלול ה-Machine Learning של Coddy. שיעור 9 מתוך 51.

‏K-means מקבץ לפי מרחק, ולכן היחידות הגדולות ביותר קובעות. נבחן חתולי מחסה לפי משקל בגרמים וגיל בשנים: פער של 500 גרם גובר על פער של 10 שנים.‏

‏שני תרשימים של 120 חתולי מחסה, הגיל בשנים על הציר האופקי והמשקל בגרמים על הציר האנכי. משמאל, קיבוץ של הנתונים הגולמיים: החתולים הבוגרים מתחלקים לפי משקל, תוך ערבוב בין צעירים למבוגרים. מימין, קיבוץ לאחר התאמת קנה המידה: גורים, בוגרים וחתולים מבוגרים, מתחלקים לפי גיל‏

קודם בצעו סטנדרטיזציה, כמו עבור k-NN, כדי שכל תכונה תיחשב באותה מידה:

X_scaled = StandardScaler().fit_transform(X)
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(X_scaled)

make_pipeline(StandardScaler(), KMeans(...)) מבצע את שניהם במודל אחד. לאחר מכן, אפשר לקרוא כל קבוצה ביחידות המקוריות: לחשב את הממוצע של השורות המקוריות שלה, X[km.labels_ == c].mean(axis=0).

challenge icon

אתגר

קל

אפליקציה למציאת דירות מקבצת 100 מודעות לפי שכר הדירה והמרחק לתחנה. קוד הפתיחה מקבץ את העמודות הגולמיות, וכל הקבוצות שלו נמצאות במרחק של כ־3 ק״מ: הדולרים מטביעים את הקילומטרים.

  1. בצעו קנה מידה לשתי העמודות באמצעות StandardScaler.
  2. קבצו במקום זאת את השורות שעברו קנה מידה. השאירו את הדוח: הוא מציג כל קבוצה ביחידות אמיתיות.

עבור עיר אחרת:

38 flats: $1820 a month, 0.9 km out
33 flats: $1130 a month, 4.2 km out
29 flats: $2760 a month, 1.5 km out

נסו בעצמכם

import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler

# שורה אחת לכל דירה: שכר דירה חודשי בדולרים, מרחק מהתחנה בק״מ
flats = pd.read_csv("flats.csv")
X = flats[["rent", "station_km"]]

# הקוד הזה מקבץ את העמודות הגולמיות: יש לתקן זאת
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(X)

# הצג כל קבוצה ביחידות האמיתיות, מהגדולה לקטנה
sizes = pd.Series(km.labels_).value_counts()
for c in sizes.index:
    group = flats[km.labels_ == c]
    print(f"{sizes[c]} flats: ${round(group['rent'].mean())} a month, {group['station_km'].mean():.1f} km out")
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה למידה בלתי מונחית

תרגלו בעצמכם: קומפיילר Python אונליין