Menu
CoddyTech

אינרציה

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

הפרק הזה עוסק בבחירת k. בסופו תבחרו אותו עבור המשלוחים של מאפייה ותמפו את האזורים:

מפה של נקודות משלוח בעיר, מזרח בק״מ לרוחב וצפון במטרים כלפי מעלה, מחולקת לשלושה אזורים של 45, 40 ו-25 נקודות, ובמרכז כל אחד מהם כוכב שחור

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

36 תפוחים בשלוש קבוצות, שכל אחד מהם מחובר למרכז הכוכב השחור של הקבוצה שלו באמצעות קו אפור דק. האינרציה מעלה בריבוע את אורכו של כל קו ומחברת את כולם

KMeans שומר את הערך ב-inertia_. עבור 180 התפוחים:

for k in [1, 2, 3, 4]:
    km = KMeans(n_clusters=k, n_init=10, random_state=0)
    km.fit(X)
    print(k, round(km.inertia_))

זה מדפיס:

1 1718
2 752
3 230
4 196

יותר מרכזים, חישוקים קצרים יותר: inertia תמיד קטנה ככל ש-k גדל. כשיש מרכז אחד לכל נקודה, היא שווה ל-0, לכן הערך הקטן ביותר אינו הטוב ביותר.

challenge icon

אתגר

קל

בית מלאכה לקרמיקה אורז אגרטלים בקופסאות בכמה גדלים. לכל אגרטל נבחר הגודל הקרוב ביותר; אינרציה מודדת עד כמה ההתאמה גרועה. התוכנית קוראת את budget, כלומר את מידת אי־ההתאמה המרבית שבית המלאכה לקרמיקה מקבל.

  1. נסו k = 1, 2, 3 וכן הלאה: התאימו את KMeans ל־vases והדפיסו את האינרציה של כל k, לאחר עיגול.
  2. עצרו ב־k הראשון שהאינרציה שלו עומדת בתקציב, והדפיסו אותו.

עבור בית מלאכה אחר לקרמיקה:

k = 1, inertia 15120
k = 2, inertia 4811
k = 3, inertia 1290
Box sizes needed: 3

נסו בעצמכם

import numpy as np
from sklearn.cluster import KMeans

# אל תשנו את השורות שלהלן
rng = np.random.default_rng(8)
# ארבעה סוגי אגרטלים: גובה ורוחב אופייניים בס"מ, וכמה יש מכל סוג
kinds = [(15, 8, 25), (38, 13, 25), (22, 22, 20), (58, 26, 10)]
parts = []
for h, w, n in kinds:
    parts.append(np.column_stack([rng.normal(h, 2.5, n), rng.normal(w, 2, n)]))
# 80 אגרטלים, שורה אחת לכל אגרטל: גובה ורוחב בס"מ
vases = np.round(np.concatenate(parts), 1)

# מידת אי-ההתאמה המרבית, במונחי אינרציה, שבית המלאכה לקדרות מוכן לקבל
budget = int(input())

# כתבו את הקוד שלכם למטה
quiz iconבחנו את עצמכם

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

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

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