Menu
CoddyTech

עד כמה ההתאמה טובה?

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

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

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

R בריבוע הוא החלק מהפיזור שהקו מסביר:

wind = np.array([6, 8, 10, 12, 15, 18])
boat = np.array([3.1, 4.4, 4.9, 6.2, 6.8, 8.1])
slope, intercept = np.polyfit(wind, boat, 1)
predicted = slope * wind + intercept
ss_res = ((boat - predicted) ** 2).sum()  # ההתאמה: 0.35
ss_tot = ((boat - boat.mean()) ** 2).sum()  # הממוצע: 16.23
print(np.round(1 - ss_res / ss_tot, 3))

הדבר מדפיס 0.979: הקו מסביר 98% מהפיזור של המהירות. 1 הוא קו מושלם, 0 אינו טוב יותר מהממוצע.

זהו הציון המקובל של מודל שמנבא מספרים. עבור קו מותאם, הוא שווה ל־r בריבוע.

challenge icon

אתגר

בינוני

חוות פטריות תיעדה 16 ערוגות גידול בקובץ mushrooms.csv. התוכנית קוראת שם של עמודה, והקוד ההתחלתי מתאים את הקו שמנבא את harvest_kg על סמך העמודה. בדוח שלה דרוש r_squared, שעדיין ריק.

  1. השלימו את r_squared(y, predicted) כך שתחזיר את R בריבוע.
  2. בסוף, הדפיסו את הבדיקה: המתאם בין x ל־y, בריבוע, כפול 100, מעוגל לספרה עשרונית אחת.

עבור חווה אחרת והקלט humidity:

humidity explains 27.0% of the harvest variation
Check with r squared: 27.0%

נסו בעצמכם

import numpy as np
import pandas as pd


# מחזירה את R בריבוע של התחזיות עבור y
def r_squared(y, predicted):
    # כתבו את הקוד שלכם כאן
    return 0


beds = pd.read_csv("mushrooms.csv")
column = input()
# אל תשנו את השורות שלהלן
x = beds[column]
y = beds["harvest_kg"]
slope, intercept = np.polyfit(x, y, 1)
predicted = slope * x + intercept
r2 = r_squared(y, predicted)
print(f"{column} explains {np.round(r2 * 100, 1)}% of the harvest variation")

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

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

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

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