קידוד One-Hot
חלק מהיחידה סטטיסטיקה ללמידת מכונה במסלול ה-Machine Learning של Coddy. שיעור 53 מתוך 64.
לכלי נגינה אין סדר: אם ממספרים אותם 1, 2, 3, פסנתר ייחשב ליותר מתופים. קידוד one-hot נותן לכל קטגוריה עמודת 0/1 משלה במקום זאת:
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 עמודות.
אתגר
בינוניאתר נופש מציג בקתות בקובץ cabins.csv. התוכנית קוראת שם של עמודה, area או heat. קוד הפתיחה מקצה לה מספרים כדי להציג מתאם עם המחיר, אבל אין סדר לאף אחת מהעמודות: ה-r הזה מומצא.
- החליפו את השורות שלה: קודדו את העמודה בקידוד one-hot (0 ו-1).
- הדפיסו כמה עמודות נוצרו, ואז כל עמודה חדשה עם מספר הערכים 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)}")
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה סטטיסטיקה ללמידת מכונה
1מרכז ופיזור
ממוצע וחציוןאחוזונים ורבעוניםשונות וסטיית תקןמדגם או אוכלוסייה?הערך השכיח ביותרסיכום: זמני משלוח4מדגמים ואוכלוסיות
אוכלוסייה ומדגםממוצעי מדגמים משתניםהתפלגות הדגימהמדגמים גדולים יותר, פחות רעשסיכום: סקר בעיירה5ערכים חריגים
תרשימי קופסהכלל הטווח הבין־רבעוני (IQR)כלל ציון Zטיפול בערכים חריגיםסיכום: תקלות בחיישניםתרגלו בעצמכם: קומפיילר Python אונליין