آموزش رایگان صفر تا صد یادگیری ماشین (Machine Learning) به زبان ساده
-
خوش آمدید به یادگیری ماشین!
-
میانگین، میانه و مد در یادگیری ماشین
-
انحراف معیار (Standard Deviation) در یادگیری ماشین
-
صدک (Percentile) در یادگیری ماشین
-
توزیع دادهها در یادگیری ماشین
-
توزیع نرمال دادهها در یادگیری ماشین
-
نمودار پراکندگی (Scatter Plot) در یادگیری ماشین
-
رگرسیون خطی در یادگیری ماشینی
-
رگرسیون چندجملهای در یادگیری ماشین
-
رگرسیون چندگانه در یادگیری ماشین
-
روش Train/Test در یادگیری ماشین
-
درخت تصمیمگیری در یادگیری ماشین
-
ماتریس سردرگمی (Confusion Matrix) در یادگیری ماشین
-
خوشهبندی سلسلهمراتبی (Hierarchical Clustering) در یادگیری ماشین
-
رگرسیون لجستیک در یادگیری ماشین
-
Grid Search در یادگیری ماشین
-
پردازش دادههای دستهای (Categorical Data) در یادگیری ماشین
-
خوشهبندی K-Means در یادگیری ماشین
-
یادگیری Bootstrap Aggregation (Bagging) در یادگیری ماشین
-
کراس والیدیشن (Cross Validation) در یادگیری ماشین
-
منحنی AUC - ROC در یادگیری ماشین
-
الگوریتم K-Nearest Neighbors (KNN) در یادگیری ماشین
پردازش دادههای دستهای (Categorical Data) در یادگیری ماشین
در یادگیری ماشین، دادههای دستهای (Categorical Data) باید به دادههای عددی تبدیل شوند تا مدلهای ما بتوانند از آنها استفاده کنند. در این مقاله با One Hot Encoding و Dummifying آشنا میشویم و نحوه پیادهسازی آن در Python Pandas را بررسی میکنیم.
فهرست مطالب 📌
1. چرا دادههای دستهای مشکلسازند؟ 🧐
در یادگیری ماشین، بسیاری از مدلها فقط با دادههای عددی کار میکنند. اما اگر مجموعه دادههای ما شامل متغیرهای دستهای مانند برند ماشین یا مدل آن باشد، مستقیماً نمیتوانیم از آنها استفاده کنیم.
🔴 راهکار چیست؟
بجای حذف این دادهها، باید آنها را به عددی تبدیل کنیم. یکی از روشهای متداول One Hot Encoding است که در ادامه توضیح خواهیم داد.
2. در ماشین لرنینگ One Hot Encoding چیست؟ 🔥
در One Hot Encoding، برای هر دسته در یک ویژگی خاص، یک ستون جداگانه ساخته میشود. مقدار هر ستون 1 یا 0 خواهد بود:
✅ عدد 1 نشان میدهد که این سطر به آن دسته تعلق دارد.
❌ عدد 0 یعنی این دسته در آن سطر وجود ندارد.
به عنوان مثال، اگر مجموعه دادههای ما شامل برند ماشین باشد:
Car | One 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())
🔹 در خروجی، دادههای ما مشابه این خواهند بود:
Car | Model | Volume | Weight | CO2 |
---|---|---|---|---|
Toyota | Aygo | 1000 | 790 | 99 |
BMW | 216 | 1600 | 1390 | 108 |
Audi | A4 | 2000 | 1490 | 104 |
📌 تبدیل دادههای دستهای با One Hot Encoding
اکنون، ستون Car را به One Hot Encoding تبدیل میکنیم:
ohe_cars = pd.get_dummies(cars[['Car']])
print(ohe_cars.to_string())
🔹 خروجی:
Car_Audi | Car_BMW | Car_Toyota |
---|---|---|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
📌 ترکیب دادههای عددی با 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_blue | color_red | color_green |
---|---|---|
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 1 |
اما در Dummifying، یکی از ستونها حذف میشود:
dummies = pd.get_dummies(cars[['color']], drop_first=True)
print(dummies.to_string())
🔹 خروجی:
color_red | color_green |
---|---|
0 | 0 |
1 | 0 |
0 | 1 |
🚀 مزیت Dummifying: تعداد ستونها را کاهش میدهد و مدل یادگیری ماشین سریعتر اجرا میشود.
5. نتیجهگیری 🎯
✅ دادههای دستهای نمیتوانند مستقیماً در مدلهای یادگیری ماشین استفاده شوند.
✅ One Hot Encoding به تبدیل این دادهها به عددی کمک میکند.
✅ Dummifying با کاهش تعداد ستونها باعث بهینهسازی مدل میشود.
✅ Pandas قابلیت انجام این تبدیلها را بهسادگی فراهم میکند.