Menu
CoddyTech

התאמת ריבועים פחותים

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

אפשר להמשיך לנחש קווים בלי סוף. np.polyfit(x, y, 1) מוצאת מיד את הקו הטוב ביותר: הקו שסכום השאריות בריבוע שלו הוא הקטן ביותר. הנה עומק השלג בסערה:

hours = np.array([1, 2, 3, 5, 6])
depth = np.array([14, 22, 35, 52, 61])
slope, intercept = np.polyfit(hours, depth, 1)
print(np.round(slope, 2), np.round(intercept, 2))

הפקודה הזו מדפיסה 9.5 4.5: כ־9.5 ס"מ יותר שלג בכל שעה, ו־4.5 ס"מ בשעה 0. אף קו אחר לא מפספס בפחות:

עומק השלג ביחס לשעות, כחמש נקודות, עם שלושה קווים: שני קווים מקווקווים שהם ניחושים, עם סכומי ריבועי שאריות של 159 ו־18, וקו polyfit עבה עם 6.5

ה־1 מבקש קו ישר, ו־x מופיע ראשון. זוהי רגרסיה ליניארית, המודל הראשון שתאמנו ביחידה 3.

challenge icon

אתגר

בינוני

יצרנית רחפנים רוצה לדעת איזו מדידה מנבאת בצורה הטובה ביותר את זמן הטיסה. הקובץ drones.csv מכיל 15 טיסות: payload_g, wind_kmh ו־flight_min. קוד הפתיחה טוען אותו ומגדיר את ssr(x, y, slope, intercept).

  1. עבור כל עמודה ב־columns, התאם את הקו שמנבא את flight_min לפיה.
  2. הדפס את המשוואה שלה ואת SSR כפי שמוצג להלן: שיפוע עם 3 ספרות אחרי הנקודה העשרונית, חיתוך ו־SSR עם 2.
  3. הדפס את העמודה עם ערך ה־SSR הנמוך יותר.

עבור רחפן אחר:

payload_g: flight_min = -0.001 * payload_g + 21.55, SSR 164.94
wind_kmh: flight_min = -0.481 * wind_kmh + 28.13, SSR 9.1
Better predictor: wind_kmh

נסו בעצמכם

import numpy as np
import pandas as pd


# מחזירה את סכום ריבועי השאריות של הישר slope * x + intercept (שיעור 35)
def ssr(x, y, slope, intercept):
    return ((y - (slope * x + intercept)) ** 2).sum()


drones = pd.read_csv("drones.csv")
columns = ["payload_g", "wind_kmh"]

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

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

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

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