Menu
CoddyTech

קידוד One-Hot

חלק מהיחידה סטטיסטיקה ללמידת מכונה במסלול ה-Machine Learning של Coddy. שיעור 53 מתוך 64.

לכלי נגינה אין סדר: אם ממספרים אותם 1, 2, 3, פסנתר ייחשב ליותר מתופים. קידוד one-hot נותן לכל קטגוריה עמודת 0/1 משלה במקום זאת:

כלי הנגינה של ארבעה תלמידים, פסנתר, תופים, פסנתר, צ'לו, הופכים לשלוש עמודות בשם צ'לו, תופים ופסנתר: בכל שורה יש 1 יחיד, בעמודה של כלי הנגינה שלה, ו-0 בעמודות האחרות, בעוד שעמודת השבועות נשארת ללא שינוי

pd.get_dummies עושה זאת, ו־dtype=int מבקש 1 ו־0 במקום True ו־False:

pupils = pd.DataFrame({"instrument": ["piano", "drums", "piano", "cello"],
                       "weeks": [4, 3, 6, 10]})
encoded = pd.get_dummies(pupils, columns=["instrument"], dtype=int)
print(encoded)

זה מדפיס:

   weeks  instrument_cello  instrument_drums  instrument_piano
0      4                 0                 0                 1
1      3                 0                 1                 0
2      6                 0                 0                 1
3     10                 1                 0                 0

העמודות החדשות מצטרפות בסוף, אחת לכל ערך לפי סדר אלפביתי. המחיר הוא רוחב: 500 ערכים שונים יוסיפו 500 עמודות.

challenge icon

אתגר

בינוני

אתר נופש מציג בקתות בקובץ cabins.csv. התוכנית קוראת שם של עמודה, area או heat. קוד הפתיחה מקצה לה מספרים כדי להציג מתאם עם המחיר, אבל אין סדר לאף אחת מהעמודות: ה-r הזה מומצא.

  1. החליפו את השורות שלה: קודדו את העמודה בקידוד one-hot (0 ו-1).
  2. הדפיסו כמה עמודות נוצרו, ואז כל עמודה חדשה עם מספר הערכים 1 שבה.

עבור חמש בקתות והקלט heat:

heat became 2 columns:
heat_gas: 3 cabins
heat_wood: 2 cabins

נסו בעצמכם

import pandas as pd

cabins = pd.read_csv("cabins.csv")
column = input()

# כתבו את הקוד שלכם למטה
# השורות האלה מקצות מספרים לאזורים ולסוגי החימום, אף שאין ביניהם סדר מובנה: החליפו אותן
numbers = {"coast": 1, "hills": 2, "lake": 3, "woods": 4, "gas": 1, "solar": 2, "wood": 3}
cabins[column] = cabins[column].map(numbers)
print(f"{column} against price: r = {round(cabins[column].corr(cabins['price']), 2)}")
quiz iconבחנו את עצמכם

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

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

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