שונות וסטיית תקן
חלק מהיחידה סטטיסטיקה ללמידת מכונה במסלול ה-Machine Learning של Coddy. שיעור 3 מתוך 64.
.std() הוא המרחק הטיפוסי מהממוצע. כאן הוא מחושב ידנית, עבור חמש כוסות אספרסו:
כל פער מהממוצע הוא סטייה. הן מתקזזות ל־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 לעולם לא משתנה, ולכן היא לא מספקת למודל שום מידע.
אתגר
קלבקרת איכות בודקת עד כמה המכונה ממלאת בקבוקי מיץ באופן אחיד. קוד ההתחלה קורא שישה נפחים במ״ל ומדפיס את מה שמחזירה spread_by_hand(a), לצד np.std. השלימו את הפונקציה כך שתחזיר:
- את השונות: הממוצע של הסטיות בריבוע מהממוצע של
a, - את סטיית התקן, השורש הריבועי שלה.
עבור הנפחים 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))
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה סטטיסטיקה ללמידת מכונה
1מרכז ופיזור
ממוצע וחציוןאחוזונים ורבעוניםשונות וסטיית תקןמדגם או אוכלוסייה?הערך השכיח ביותרסיכום: זמני משלוח4מדגמים ואוכלוסיות
אוכלוסייה ומדגםממוצעי מדגמים משתניםהתפלגות הדגימהמדגמים גדולים יותר, פחות רעשסיכום: סקר בעיירה5ערכים חריגים
תרשימי קופסהכלל הטווח הבין־רבעוני (IQR)כלל ציון Zטיפול בערכים חריגיםסיכום: תקלות בחיישניםתרגלו בעצמכם: קומפיילר Python אונליין