Menu
CoddyTech

כוונון צינור עיבוד

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

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

pipe = make_pipeline(SimpleImputer(), DecisionTreeClassifier(random_state=0))
grid = {"simpleimputer__strategy": ["mean", "median", "most_frequent"],
        "decisiontreeclassifier__max_depth": [2, 4, 6, 8]}
search = GridSearchCV(pipe, grid, cv=5)
search.fit(X_train, y_train)

השמות של make_pipeline לכל שלב מבוססים על שם המחלקה שלו, באותיות קטנות. עבור 200 שיגורי טילי מודל, שהגיעו לגובה של 300 מ׳ או לא, 12 ההגדרות קיבלו את הציונים הבאים:

רשת של דיוקי CV ממוצעים: שורות עבור מילוי בממוצע, בחציון ובערך השכיח ביותר, עמודות עבור עומקי עץ 2, 4, 6 ו־8. הציונים נעים בין 0.733 ל־0.820, ותא המילוי בחציון בעומק 6 מסומן כטוב ביותר, עם ציון 0.820

בכל קיפול מאמנים מחדש את כל הצינור, כולל את משלים הנתונים, כך שאף קיפול לא מציץ בשורות שבודקות אותו.

challenge icon

אתגר

בינוני

בית ספר למוזיקה רוצה לדעת אילו תלמידי כינור יעברו את בחינת הדרגה שלהם. קוד הפתיחה קורא שלושה ערכים של k, וחיפוש הרשת שלו על פני צינור עיבוד נעצר בגלל שגיאה.

  1. תקנו את שני המפתחות של הרשת כך שהחיפוש יכוונן את האסטרטגיה של משלים הערכים החסרים ואת מספר השכנים של k-NN.
  2. הדפיסו את ההגדרות הטובות ביותר, את הדיוק באימות צולב ואת הדיוק במבחן, כמו בדוגמה שלהלן.

בית ספר אחר, עם 2, 4, 6:

Best: mean fills, 6 neighbors
Cross-validated accuracy: 0.720
Test accuracy: 0.820

נסו בעצמכם

import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline

# תלמידי כינור: עברו את בחינת הדרגה (1) או לא (0); חלק מיומני האימון
# ומציוני הקריאה מן הדף חסרים
students = pd.read_csv("violins.csv")
X = students.drop(columns="passed")
y = students["passed"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
ks = [int(input()), int(input()), int(input())]

# החיפוש הזה נעצר בגלל שגיאה: תקנו את רשת הפרמטרים
pipe = make_pipeline(SimpleImputer(), StandardScaler(), KNeighborsClassifier())
grid = {
    "strategy": ["mean", "median"],
    "n_neighbors": ks,
}
search = GridSearchCV(pipe, grid, cv=5)
search.fit(X_train, y_train)

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

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

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

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