Menu
CoddyTech

מדגמים גדולים יותר, פחות רעש

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

מדגמים גדולים יותר מספקים אומדנים טובים יותר, אבל עד כמה הם טובים יותר? כאן מוצגים 1000 ממוצעים של 25 סלי קניות, ו־1000 ממוצעים של 100 סלים:

שתי התפלגויות פעמוניות של ממוצעי פריטים לסל, שתיהן ממורכזות סביב 30. ממוצעי 25 הסלים באפור מתפרשים בערך מ־20 עד 40; ממוצעי 100 הסלים בכחול יוצרים התפלגות פעמונית שרוחבה חצי

sample_means מודדת כל פיזור. השגיאה התקנית, std / np.sqrt(n), מנבאת אותו ללא סימולציה:

for n in [25, 100]:
    spread = sample_means(baskets, n, 1000).std()
    print(n, np.round(spread, 2), np.round(baskets.std() / np.sqrt(n), 2))

הפעולה הזו מדפיסה:

25 3.43 3.45
100 1.72 1.72

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

challenge icon

אתגר

בינוני

bags מכיל את משקלן בגרמים של 5000 שקי הקמח של טחנה. בקרת האיכות שוקלת מדגם מדי שעה; התוכנית קוראת את שגיאת התקן שהיא מקבלת.

  1. מצאו את n הקטן ביותר שעבורו שגיאת התקן, bags.std() / np.sqrt(n), קטנה או שווה לערך הזה: התחילו ב־1 והוסיפו 1 כל עוד היא גדולה מדי.
  2. בדקו אותו: סטיית התקן של 300 ממוצעי מדגמים מתוך sample_means.
  3. הדפיסו כמו למטה, עם 2 ספרות אחרי הנקודה העשרונית.

עבור טחנה אחרת ו־2.5:

Bags to weigh: 24
Standard error: 2.46 g
Simulated spread: 2.37 g

נסו בעצמכם

import numpy as np

target = float(input())

# אין לשנות את השורות שלהלן: המשקל בגרמים של כל שקית קמח
rng = np.random.default_rng(22)
bags = np.round(rng.normal(500, 8, size=5000), 1)


# הפונקציה שלך מ-Sample Means Vary: הממוצעים של count מדגמים
def sample_means(data, size, count):
    means = []
    for i in range(count):
        sample = rng.choice(data, size=size, replace=False)
        means.append(sample.mean())
    return np.array(means)


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

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

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

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