بازگشت به دوره

آموزش رایگان صفر تا صد یادگیری ماشین (Machine Learning) به زبان ساده

0% تکمیل‌شده
0/0 مرحله

در یادگیری ماشین، داده‌های دسته‌ای (Categorical Data) باید به داده‌های عددی تبدیل شوند تا مدل‌های ما بتوانند از آن‌ها استفاده کنند. در این مقاله با One Hot Encoding و Dummifying آشنا می‌شویم و نحوه پیاده‌سازی آن در Python Pandas را بررسی می‌کنیم.


فهرست مطالب 📌

  1. چرا داده‌های دسته‌ای مشکل‌سازند؟
  2. One Hot Encoding چیست؟
  3. مثال عملی با پایتون
  4. Dummifying چیست و چه تفاوتی دارد؟
  5. نتیجه‌گیری

1. چرا داده‌های دسته‌ای مشکل‌سازند؟ 🧐

در یادگیری ماشین، بسیاری از مدل‌ها فقط با داده‌های عددی کار می‌کنند. اما اگر مجموعه داده‌های ما شامل متغیرهای دسته‌ای مانند برند ماشین یا مدل آن باشد، مستقیماً نمی‌توانیم از آن‌ها استفاده کنیم.

🔴 راهکار چیست؟
بجای حذف این داده‌ها، باید آن‌ها را به عددی تبدیل کنیم. یکی از روش‌های متداول One Hot Encoding است که در ادامه توضیح خواهیم داد.

2. در ماشین لرنینگ One Hot Encoding چیست؟ 🔥

در One Hot Encoding، برای هر دسته در یک ویژگی خاص، یک ستون جداگانه ساخته می‌شود. مقدار هر ستون 1 یا 0 خواهد بود:
✅ عدد 1 نشان می‌دهد که این سطر به آن دسته تعلق دارد.
❌ عدد 0 یعنی این دسته در آن سطر وجود ندارد.

به عنوان مثال، اگر مجموعه داده‌های ما شامل برند ماشین باشد:

CarOne Hot Encoding
Toyota[1, 0, 0]
BMW[0, 1, 0]
Audi[0, 0, 1]

در اینجا، هر برند یک ستون جداگانه دارد و مقدار 1 نشان می‌دهد که ماشین مربوطه به آن برند تعلق دارد.

3. مثال عملی با پایتون 🐍

بیایید این روش را با پایتون و کتابخانه Pandas پیاده‌سازی کنیم.

📌 خواندن داده‌ها

ابتدا یک فایل CSV شامل اطلاعات خودروها را وارد می‌کنیم:

import pandas as pd

cars = pd.read_csv('data.csv')
print(cars.to_string())

🔹 در خروجی، داده‌های ما مشابه این خواهند بود:

CarModelVolumeWeightCO2
ToyotaAygo100079099
BMW21616001390108
AudiA420001490104

📌 تبدیل داده‌های دسته‌ای با One Hot Encoding

اکنون، ستون Car را به One Hot Encoding تبدیل می‌کنیم:

ohe_cars = pd.get_dummies(cars[['Car']])
print(ohe_cars.to_string())

🔹 خروجی:

Car_AudiCar_BMWCar_Toyota
001
010
100

📌 ترکیب داده‌های عددی با One Hot Encoding

حالا داده‌های تبدیل‌شده را با سایر ویژگی‌ها مثل حجم موتور (Volume) و وزن خودرو (Weight) ترکیب می‌کنیم:

X = pd.concat([cars[['Volume', 'Weight']], ohe_cars], axis=1)
y = cars['CO2']

4. در ماشین لرنینگ Dummifying چیست و چه تفاوتی دارد؟ 🤔

Dummifying یک نسخه بهینه‌شده از One Hot Encoding است. در این روش، یکی از ستون‌ها حذف می‌شود چون اطلاعات را می‌توان از بقیه ستون‌ها استخراج کرد.

مثال: اگر داده‌های ما شامل رنگ خودرو باشد:

color
blue
red
green

با One Hot Encoding، خروجی این خواهد بود:

color_bluecolor_redcolor_green
100
010
001

اما در Dummifying، یکی از ستون‌ها حذف می‌شود:

dummies = pd.get_dummies(cars[['color']], drop_first=True)
print(dummies.to_string())

🔹 خروجی:

color_redcolor_green
00
10
01

🚀 مزیت Dummifying: تعداد ستون‌ها را کاهش می‌دهد و مدل یادگیری ماشین سریع‌تر اجرا می‌شود.

5. نتیجه‌گیری 🎯

داده‌های دسته‌ای نمی‌توانند مستقیماً در مدل‌های یادگیری ماشین استفاده شوند.
One Hot Encoding به تبدیل این داده‌ها به عددی کمک می‌کند.
Dummifying با کاهش تعداد ستون‌ها باعث بهینه‌سازی مدل می‌شود.
Pandas قابلیت انجام این تبدیل‌ها را به‌سادگی فراهم می‌کند.