Menu
CoddyTech

שידור (Broadcasting)

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

מודלים לומדים טוב יותר כשכל תכונה נמצאת סביב 0. לכן מחסרים את הממוצע של כל עמודה מהערכים בעמודה שלה, ו-NumPy מעתיקה את הממוצעים לכל שורה:

טבלת 3 על 2 של גבהים ומשקלים, פחות שורת הממוצעים 170 ו-70 שמועתקת לכל שלוש השורות, שווה לטבלה הממורכזת: 0 ו--10, 10 ו-10, -10 ו-0

בקוד, עבור הגובה והמשקל של שלושה אנשים:

data = np.array([[170, 60],
                 [180, 80],
                 [160, 70]])
print(data - data.mean(axis=0))

זה מדפיס:

[[  0. -10.]
 [ 10.  10.]
 [-10.   0.]]

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

לממוצעים יש צורה (2,): ערך אחד לכל עמודה בטבלה בגודל (3, 2). כל אורך אחר יגרום לעצירה עם שגיאה.

challenge icon

אתגר

קל

אפליקציית כושר מממרכזת כל טבלה לפני האימון. קוד הפתיחה קורא ל־center עם שתי טבלאות, users (3 מאפיינים) ו־workouts (2), ומדפיס את התוצאות. כרגע center מחזירה את הטבלה ללא שינוי.

השלימו את center כך שהיא תחסיר את הממוצע של כל עמודה מאותה עמודה, עבור כל מספר של עמודות. השאירו את השורות שמתחתיה כפי שהן.

עם שני משתמשים ושני אימונים, הפלט ייראה כך:

Centered users:
[[-6.  7. -5.]
 [ 6. -7.  5.]]
Column means after centering: [0. 0. 0.]
Centered workouts:
[[-10. -90.]
 [ 10.  90.]]
Column means after centering: [0. 0.]

נסו בעצמכם

import numpy as np


def center(table):
    # החזר את table לאחר הפחתת הממוצע מכל עמודה
    # כתוב את הקוד שלך למטה
    return table


# שורה אחת לכל משתמש: גיל, דופק במנוחה, דקות פעילות גופנית ביום
users = np.array([[25, 62, 30],
                  [31, 70, 45],
                  [40, 58, 20],
                  [29, 66, 25]])
# שורה אחת לכל אימון: דקות, קלוריות שנשרפו
workouts = np.array([[30, 240],
                     [45, 410],
                     [20, 150],
                     [60, 520],
                     [35, 300]])

# אל תשנה את השורות שלמטה
print("Centered users:")
print(center(users))
print("Column means after centering:", np.round(center(users).mean(axis=0), 2))
print("Centered workouts:")
print(center(workouts))
print("Column means after centering:", np.round(center(workouts).mean(axis=0), 2))
quiz iconבחנו את עצמכם

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

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

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