השלמת ערכים חסרים בצינור עיבוד
חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 47 מתוך 58.
ביומנים אמיתיים יש פערים, ורוב המודלים לא מקבלים אותם. SimpleImputer ממלא כל פער בממוצע, בחציון או בערך השכיח ביותר בעמודה שלו.
ממלאים לפני הפיצול, ושורות הבדיקה עוזרות לבחור את הערך הזה: דליפה. שבעה עומקי צלילה וחסר אחד:
בצינור, fit לומדת את ערכי המילוי משורות האימון בלבד:
from sklearn.impute import SimpleImputer
pipe = make_pipeline(SimpleImputer(strategy="median"), StandardScaler(), model)
pipe.fit(X_train, y_train)
print(pipe[0].statistics_) # ערכי ההשלמה של השלב הראשוןעבור יומן צלילה (עומק, דקות, טמפרטורת המים), הפקודה מדפיסה:
[19. 44. 21.]גם עבור מילים, שלבי העיבוד של המספרים הופכים למסלול אחד של ColumnTransformer:
lane = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())
("numbers", lane, ["depth_m", "minutes"])אתגר
בינונישירות היערות חוזה אילו פגיעות ברק מציתות שריפות, אך חלק מהמדידות חסרות. קוד הפתיחה מחלק את wildfire.csv וקורא אסטרטגיה, mean או median.
- התאם צינור עיבוד הכולל משלים חסרים עם האסטרטגיה הזו, מתקן קנה מידה ורגרסיה לוגיסטית. הדפס את הדיוק שלו על נתוני הבדיקה.
- עבור כל עמודה, הדפס את ערך המילוי של הצינור ואת הערך שהיה מתקבל מכל השורות של
X, עם ספרה אחת אחרי הנקודה העשרונית.
יער אחר, עם median:
Test accuracy: 0.840
humidity_pct: fill 46.0, all rows would give 46.0
wind_kmh: fill 29.0, all rows would give 32.0
temp_c: fill 25.0, all rows would give 26.0
days_without_rain: fill 23.0, all rows would give 23.0במקרים שבהם השניים שונים, מילוי הערכים לפני החלוקה היה מאפשר לשורות הבדיקה להשפיע על נתוני האימון.
נסו בעצמכם
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
# פגיעות ברק ביער יבש: האם פגיעת הברק גרמה לשריפה (1) או לא (0)?
# חסרות כמה מדידות מזג אוויר.
strikes = pd.read_csv("wildfire.csv")
columns = ["humidity_pct", "wind_kmh", "temp_c", "days_without_rain"]
X = strikes[columns]
y = strikes["fire"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
strategy = input()
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה מונחית
10צינורות עיבוד
צינורות עיבודעמודות מעורבותהשלמת ערכים חסרים בצינור עיבודכוונון צינור עיבודסיכום: ניקוי וחיזויתרגלו בעצמכם: קומפיילר Python אונליין