מדידת שגיאות
חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 13 מתוך 58.
בכמה דולרים המודל מפספס? הנה מודל מחירי בתים, שנבחן על חמישה בתים שלא ראה מעולם:
sklearn.metrics מודד עבורך את השגיאות:
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
y_test = np.array([290, 410, 235, 520, 330]) # אלפי דולרים
pred = np.array([270, 450, 245, 430, 360])
print(mean_absolute_error(y_test, pred))
print(np.round(np.sqrt(mean_squared_error(y_test, pred)), 1))
print(np.round(r2_score(y_test, pred), 3))זה מדפיס:
38.0
47.1
0.776MAE, השגיאה המוחלטת הממוצעת, היא גודל הפספוס האופייני: 38 אלף. RMSE מעלה בריבוע את הפספוסים, מחשב את הממוצע ואז מוציא שורש: פספוס גדול אחד מעלה אותה ל־47.
שניהם מבוטאים ביחידות של ערך היעד. r2_score הוא R בריבוע שלך: 78% מהפיזור במחירים מוסבר.
אתגר
בינוניחנות מתמחרת מצלמות יד שנייה באמצעות מודל. האם תכונה נוספת עוזרת? התוכנית קוראת את shutter_k (אלפי תמונות שצולמו) או את megapixels. קוד הפתיחה מתאים שני מודלים: אחד עם age_years בלבד, ואחד עם התכונה הנוספת, ושומר את התחזיות שלהם עבור נתוני הבדיקה ב-preds.
- עבור כל מודל, הדפיסו את ה-MAE שלו, את ה-RMSE (ספרה אחת אחרי הנקודה העשרונית) ואת R squared (3 ספרות אחרי הנקודה העשרונית).
- הדפיסו את המודל עם ה-MAE הנמוך יותר.
עבור חנות אחרת ו-shutter_k:
age_years: MAE 212.4, RMSE 268.1, R squared 0.853
age_years + shutter_k: MAE 98.7, RMSE 121.0, R squared 0.97
Better: age_years + shutter_k, off by 98.7 dollars on a typical cameraנסו בעצמכם
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# שורה אחת לכל מצלמה שנמכרה: גיל, מספר הפעלות התריס באלפים, מגה־פיקסלים, מחיר בדולרים
cameras = pd.read_csv("cameras.csv")
extra = input()
names = ["age_years", "age_years + " + extra]
columns = [["age_years"], ["age_years", extra]]
# פצלו שורות שלמות; כל מודל בהמשך בוחר את העמודות שלו
X_train, X_test, y_train, y_test = train_test_split(cameras, cameras["price"], test_size=0.25, random_state=0)
# מודל אחד לכל רשימת עמודות, והתחזיות שלו עבור מצלמות הבדיקה
preds = []
for cols in columns:
model = LinearRegression()
model.fit(X_train[cols], y_train)
preds.append(model.predict(X_test[cols]))
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה מונחית
תרגלו בעצמכם: קומפיילר Python אונליין