Menu
CoddyTech

שונות וסטיית תקן

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

.std() הוא המרחק הטיפוסי מהממוצע. כאן הוא מחושב ידנית, עבור חמש כוסות אספרסו:

חמש כוסות אספרסו כנקודות סביב קו ממוצע כתום ב-26 שניות. קו אפור מחבר כל נקודה לקו, ולצדו מסומנת הסטייה שלה: ‎-2, ‎+1, ‎-1, ‎+4 ו-‎-2

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

shots = np.array([24, 27, 25, 30, 24])
deviations = shots - shots.mean()
variance = (deviations ** 2).mean()
print(deviations)
print(variance, np.round(np.sqrt(variance), 2))

זה מדפיס:

[-2.  1. -1.  4. -2.]
5.2 2.28

השורש הריבועי שלו, סטיית התקן, מחזיר את השניות בריבוע לשניות: 2.28. np.var(a) ו-np.std(a) מבצעות כל אחת את הפעולה בקריאה אחת.

תכונה עם סטיית תקן של 0 לעולם לא משתנה, ולכן היא לא מספקת למודל שום מידע.

challenge icon

אתגר

קל

בקרת איכות בודקת עד כמה המכונה ממלאת בקבוקי מיץ באופן אחיד. קוד ההתחלה קורא שישה נפחים במ״ל ומדפיס את מה שמחזירה spread_by_hand(a), לצד np.std. השלימו את הפונקציה כך שתחזיר:

  1. את השונות: הממוצע של הסטיות בריבוע מהממוצע של a,
  2. את סטיית התקן, השורש הריבועי שלה.

עבור הנפחים 1004, 996, 1011, 993, 1002 ו-998:

Variance: 34.56 ml squared
Std: 5.88 ml
Same as np.std: True

נסו בעצמכם

import numpy as np

values = []
for i in range(6):
    values.append(int(input()))
volumes = np.array(values)


# מחזירה את השונות ואת סטיית התקן של המערך a
def spread_by_hand(a):
    # כתבו כאן את הקוד שלכם, ואז החזירו את שני הערכים במקום 0, 0
    return 0, 0


# אל תשנו את השורות שלהלן
variance, std = spread_by_hand(volumes)
print(f"Variance: {np.round(variance, 2)} ml squared")
print(f"Std: {np.round(std, 2)} ml")
print("Same as np.std:", np.round(std, 2) == np.round(np.std(volumes), 2))
quiz iconבחנו את עצמכם

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

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

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