Menu
CoddyTech

תקנון

חלק מהיחידה סטטיסטיקה ללמידת מכונה במסלול ה-Machine Learning של Coddy. שיעור 49 מתוך 64.

מודלים רבים לומדים בצורה הטובה ביותר כאשר כל תכונה ממורכזת סביב 0 עם סטיית תקן של 1. תקנון עושה זאת: כל ערך הופך לציון ה-z שלו בתוך העמודה שלו.

חמישה דלעות, משקל בק״ג ורוחב בס״מ:

שתי שורות של נקודות על סרגל אחד ביחידות של סטיות תקן: חמישה משקלי דלעת מ־8 עד 40 ק״ג וחמישה רוחבים מ־30 עד 65 ס״מ, כל שורה ממורכזת סביב הממוצע שלה ב־0, כולן בין ‎-1.6 ל־1.6

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

pumpkins = np.array([[30, 60],
                     [8, 30],
                     [22, 55],
                     [40, 65],
                     [15, 40]])
z = (pumpkins - pumpkins.mean(axis=0)) / pumpkins.std(axis=0)
print(np.round(z.mean(axis=0), 2))
print(np.round(z.std(axis=0), 2))

הדבר מדפיס:

[0. 0.]
[1. 1.]

יש לעגל לפני שבודקים: ללא עיגול, ממוצע של 0 יכול להיות מודפס בתור 2.22044605e-17, שבריר של שגיאת עיגול.

בניגוד למינימום-מקסימום, אין טווח קבוע: רוב הערכים נופלים בין ‎-2 ל-2.

challenge icon

אתגר

בינוני

בחוות חלב מאתרים פרות חריגות. כל שורה של cows מייצגת פרה: כמות החלב (ליטרים ביום), המשקל (ק״ג) והגיל (בשנים), כפי שמוגדרים ב-features. התוכנית קוראת את המיקום של פרה k.

  1. השלימו את standardize(X). שורות הבדיקה ידפיסו אז [0. 0. 0.] ו-[1. 1. 1.].
  2. מצאו את ציון ה-z של פרה k שהכי רחוק מ-0, בלי להתחשב בסימן, והדפיסו אותו כפי שמוצג כאן, עם 2 ספרות אחרי הנקודה.

עבור פרה מחווה אחרת:

Column means: [0. 0. 0.]
Column stds: [1. 1. 1.]
Cow 2 stands out by weight: 1.76 std above the herd

נסו בעצמכם

import numpy as np

features = ["milk", "weight", "age"]
# שורה אחת לכל פרה: חלב בליטרים ליום, משקל בק״ג, גיל בשנים
cows = np.array([[28, 610, 6],
                 [22, 540, 3],
                 [35, 680, 6],
                 [31, 590, 9],
                 [19, 650, 4],
                 [26, 520, 2],
                 [30, 600, 7]])
k = int(input())


# מחזירה את X כשכל עמודה מתוקננת: ממוצע 0 וסטיית תקן 1
def standardize(X):
    # החליפו את השורה שלמטה בקוד לתקנון
    return X


# אל תשנו את שלוש השורות שלמטה: הן בודקות את הפונקציה שלכם
z = standardize(cows)
print("Column means:", np.round(z.mean(axis=0), 2))
print("Column stds:", np.round(z.std(axis=0), 2))

# כתבו את הקוד שלכם למטה: מה יוצא דופן אצל פרה k
quiz iconבחנו את עצמכם

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

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

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