בחירת מודל
חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 52 מתוך 58.
כמה משפחות של מודלים יכולות לתת שם לפינגווינים. איזה מהן מתאימה ביותר? תנו לכל אחת את אותם נתיבים ואת אותם קיפולים, ואז השוו, כמו במודלים האלה ליין:
הממוצע הגבוה ביותר מנצח. סטיית תקן קטנה אומרת שהוא ניצח בכל קיפול, ולא בחלוקה אקראית מוצלחת אחת.
pipe = make_pipeline(prep, model)
scores = cross_val_score(pipe, X_train, y_train, cv=5)כל קיפול מתאים שוב את הנתיבים לחלק האימון שלו, כך שכל ציון נשאר אמין. הפינגווינים במבחן נשארים נעולים.
אתגר
בינוניארבעה מועמדים רוצים את התפקיד. קוד הפתיחה מכיל את הנתיבים שלך, את הרשימות names ו־models, וקורא את מספר הקיפולים.
- עבור כל מועמד, בצע תיקוף צולב של צינור העיבוד
prepושל אותו מודל על שורות האימון. - הדפס את הממוצע ואת סטיית התקן שלו, בדיוק של 3 ספרות אחרי הנקודה העשרונית.
- הדפס את המנצח: בעל הממוצע הגבוה ביותר.
עבור מושבה אחרת ו־5 קיפולים:
k-NN: mean 0.951, std 0.031
Logistic regression: mean 0.964, std 0.012
Random forest: mean 0.958, std 0.027
Decision tree: mean 0.902, std 0.048
Winner: Logistic regressionנסו בעצמכם
import pandas as pd
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import make_pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier
# מושבת הפינגווינים מתוך הכירו את הפינגווינים, המאפיינים שלה והתווית שלה
penguins = pd.read_csv("penguins.csv")
numbers = ["bill_length_mm", "bill_depth_mm", "flipper_length_mm", "body_mass_g"]
text = ["island", "sex"]
X = penguins[numbers + text]
y = penguins["species"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, stratify=y, random_state=0)
# מתוך הכנת הנתונים: שני המסלולים
number_steps = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())
text_steps = make_pipeline(SimpleImputer(strategy="constant", fill_value="unknown"), OneHotEncoder())
prep = ColumnTransformer([("numbers", number_steps, numbers), ("words", text_steps, text)])
# המועמדים
names = ["k-NN", "Logistic regression", "Random forest", "Decision tree"]
models = [KNeighborsClassifier(), LogisticRegression(max_iter=1000),
RandomForestClassifier(n_estimators=100, random_state=0), DecisionTreeClassifier(random_state=0)]
folds = int(input())
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה מונחית
תרגלו בעצמכם: קומפיילר Python אונליין