צינורות עיבוד
חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 45 מתוך 58.
טבלאות אמיתיות מגיעות עם חוסרים, מילים וסולמות מעורבים. בפרק הזה נבנה אובייקט אחד שמנקה אותן ומנבא, צינור עיבוד:
התחילו בקטן: make_pipeline משרשר מדרג ומודל:
from sklearn.pipeline import make_pipeline
pipe = make_pipeline(StandardScaler(), KNeighborsClassifier())
pipe.fit(X_train, y_train)
print(pipe.score(X_test, y_test))עבור 200 ריתוכי בדיקה, חזקים או חלשים, יודפס 0.86, לעומת 0.74 ללא שינוי קנה מידה.
fit לומדת את קנה המידה משורות האימון, ואז מאמנת. כל שורה מאוחרת יותר מותאמת לאותו קנה מידה באופן אוטומטי.
אתגר
בינוניחברת בלונים מחליטה בכל ערב אם מחר יהיה יום טיסה. הפתרון ההתחלתי מבצע קנה מידה ידני: דיוק הבדיקה טוב, אבל התחזית אף פעם לא עוברת קנה מידה, ולכן היא אומרת yes בכל מזג אוויר.
- החליפו אותו בצינור עיבוד, שמבצע קנה מידה ואז מפעיל k-NN, ומותאם לשורות האימון.
- הדפיסו את דיוק הבדיקה שלו והשתמשו בו כדי לשפוט את התחזית.
בחברה אחרת, יום 20, 32, 7000, 9:
Test accuracy: 0.880
Flying day: noנסו בעצמכם
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline
# ימים קודמים בחברת כדורים פורחים: יום שבו אפשר לטוס (1) או לא (0)
days = pd.read_csv("balloons.csv")
X = days[["wind_kmh", "gusts_kmh", "visibility_m", "passengers"]].to_numpy()
y = days["flying_day"].to_numpy()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# התחזית למחר: רוח, משבי רוח, ראות, נוסעים שהזמינו מקום
day = np.array([[float(input()), float(input()), float(input()), float(input())]])
# שינוי קנה מידה ידני: הציון נראה תקין, אבל נתוני התחזית לעולם אינם עוברים שינוי קנה מידה
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
model = KNeighborsClassifier()
model.fit(X_train_scaled, y_train)
print(f"Test accuracy: {model.score(X_test_scaled, y_test):.3f}")
if model.predict(day)[0] == 1:
print("Flying day: yes")
else:
print("Flying day: no")
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה מונחית
10צינורות עיבוד
צינורות עיבודעמודות מעורבותהשלמת ערכים חסרים בצינור עיבודכוונון צינור עיבודסיכום: ניקוי וחיזויתרגלו בעצמכם: קומפיילר Python אונליין