Menu
CoddyTech

עמודות מעורבות

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

רוב הטבלאות משלבות מילים ומספרים, ולכל סוג דרוש שלב משלו. ColumnTransformer שולח כל עמודה לשלב שלה ומחבר את התוצאות:

תרשים שכותרתו 4 עמודות נכנסות, 7 עמודות יוצאות. שלושה תקליטי ויניל עם ז׳אנר, מצב, מחיר ושנה. הז׳אנר והמצב עוברים דרך OneHotEncoder לחמש עמודות של 0/1: jazz, rock, good, mint, worn. המחיר והשנה עוברים דרך StandardScaler לשתי עמודות מותאמות

עבור חנות תקליטים, בקוד:

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

prep = ColumnTransformer([
    ("words", OneHotEncoder(), ["genre", "condition"]),
    ("numbers", StandardScaler(), ["price", "year"]),
])
pipe = make_pipeline(prep, LogisticRegression(max_iter=1000))

כל רשומה כוללת שם, שלב ואת העמודות שלה. בניגוד ל־get_dummies, המקודד זוכר את הקטגוריות של נתוני האימון, כך שרשומה חדשה מקבלת את אותן 7 עמודות.

challenge icon

אתגר

בינוני

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

  1. קודד את opening ואת color, בצע קנה מידה ל-rating_gap ול-minutes, והדפס כמה עמודות מתקבלות משורות האימון.
  2. שרשר את זה לרגרסיה לוגיסטית, בצע התאמה, והדפס את דיוק הבדיקה.
  3. הדפס את סיכויי הניצחון של הערב.

מועדון אחר, שלוש פתיחות, ו-sicilian, black, 50, 15:

Columns after preparing: 7
Test accuracy: 0.805
Win chance: 0.66

נסו בעצמכם

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline

# משחקי מועדון שחמט: הפתיחה, צבע הכלים של השחקן, הדירוג שלו פחות
# הדירוג של היריב, מספר הדקות שנותרו בשעון, והאם השחקן ניצח (1) או לא (0)
games = pd.read_csv("chess.csv")
X = games[["opening", "color", "rating_gap", "minutes"]]
y = games["won"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

# המשחק של הערב, שורה אחת עם אותן עמודות
game = pd.DataFrame({"opening": [input()], "color": [input()],
                     "rating_gap": [int(input())], "minutes": [int(input())]})

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

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

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

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