חיזוי מספרים
חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 11 מתוך 58.
המודלים בפרק הזה מנבאים מספרים. בסופו, תרשים של ההחטאות של מודל יחשוף מה הוא לא הבחין בו:
התחילו עם קו שאתם מכירים. LinearRegression לומדת אותו מטבלה X, שורה אחת לכל דגימה ועמודה אחת לכל מאפיין:
from sklearn.linear_model import LinearRegression
area = np.array([60, 75, 90, 110, 130, 150]) # בתים, במ״ר
price = np.array([215, 248, 290, 335, 385, 428]) # אלפי דולרים
X = area.reshape(-1, 1) # 6 שורות, עמודה 1
model = LinearRegression()
model.fit(X, price)
print(np.round(model.coef_, 2), np.round(model.intercept_, 2))
print(np.round(np.polyfit(area, price, 1), 2))הדבר מדפיס את אותה השורה פעמיים:
[2.39] 71.59
[ 2.39 71.59]coef_ מכיל שיפוע אחד לכל תכונה: כל מ"ר נוסף מוסיף 2.39 אלף דולר. intercept_ הוא נקודת ההתחלה של הקו, ב־0 מ"ר. לאחר מכן model.predict([[100]]) מתמחר 100 מ"ר בכ־310.85 אלף.
אתגר
בינוניבית דפוס מעולם לא פרסם את המחירים שלו, אבל יש לך נתונים מ־10 עבודות קודמות: pages ו־price בדולרים. התוכנית קוראת את מספר העמודים של עבודה חדשה.
- התאם מודל
LinearRegressionלמספר העמודים, כטבלה בעלת עמודה אחת. - הדפס את המחיר לעמוד (3 ספרות אחרי הנקודה העשרונית) ואת דמי ההקמה, כלומר את החיתוך עם הציר (2 ספרות אחרי הנקודה העשרונית).
- הדפס את המחיר החזוי של העבודה החדשה (2 ספרות אחרי הנקודה העשרונית).
עבור בית דפוס אחר ו־120:
Per page: 0.095 dollars
Setup fee: 4.1 dollars
120 pages: 15.5 dollarsנסו בעצמכם
import numpy as np
from sklearn.linear_model import LinearRegression
# 10 עבודות הדפסה קודמות: מספר העמודים שהודפסו והמחיר ששולם, בדולרים
pages = np.array([40, 75, 120, 160, 210, 260, 300, 380, 450, 520])
price = np.array([7.38, 12.6, 17.65, 20.69, 26.63, 32.18, 37.76, 46.4, 55.17, 60.89])
new_pages = int(input())
# כתוב את הקוד שלך למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה מונחית
תרגלו בעצמכם: קומפיילר Python אונליין