Menu
CoddyTech

בחירת מודל

חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 52 מתוך 58.

כמה משפחות של מודלים יכולות לתת שם לפינגווינים. איזה מהן מתאימה ביותר? תנו לכל אחת את אותם נתיבים ואת אותם קיפולים, ואז השוו, כמו במודלים האלה ליין:

דיוק בחמישה קיפולים לכל מועמד בנתוני היין, מוצג כנקודות, עם פס שחור בכל ממוצע: רגרסיה לוגיסטית היא הגבוהה והמרוכזת ביותר, 0.970; ‏k-NN עם 0.940; העץ הוא הנמוך ביותר, 0.896, עם קיפול אחד שיורד ל-0.78

הממוצע הגבוה ביותר מנצח. סטיית תקן קטנה אומרת שהוא ניצח בכל קיפול, ולא בחלוקה אקראית מוצלחת אחת.

pipe = make_pipeline(prep, model)
scores = cross_val_score(pipe, X_train, y_train, cv=5)

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

challenge icon

אתגר

בינוני

ארבעה מועמדים רוצים את התפקיד. קוד הפתיחה מכיל את הנתיבים שלך, את הרשימות names ו־models, וקורא את מספר הקיפולים.

  1. עבור כל מועמד, בצע תיקוף צולב של צינור העיבוד prep ושל אותו מודל על שורות האימון.
  2. הדפס את הממוצע ואת סטיית התקן שלו, בדיוק של 3 ספרות אחרי הנקודה העשרונית.
  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())

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

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

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

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