AliFallahi
AliFallahi
خواندن ۴ دقیقه·۳ سال پیش

آموزش روش کدبندی وان هات (One Hot Encoding) — به زبان ساده

آموزش روش کدبندی وان هات (One Hot Encoding) — به زبان ساده
آموزش روش کدبندی وان هات (One Hot Encoding) — به زبان ساده


یکی از مهمترین اقداماتی که پیش از اجرای مدل ماشین لرنینگ باید انجام شود، پیش پردازش (Pre-Processing) داده ها است.

مراحل کلی در پیاده سازی و اجرای یک مدل یادگیری ماشین
مراحل کلی در پیاده سازی و اجرای یک مدل یادگیری ماشین


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

  • تغییر بازه عددی
  • حذف داده های ناموجود
  • تبدیل متغیرهای غیرعددی به متغیرهای عددی
فعالیت های رایج در پیش پردازش داده ها
فعالیت های رایج در پیش پردازش داده ها


تبدیل متغیرهای غیرعددی به متغیرهای عددی

در این مطلب به تبدیل متغیرهای غیرعددی (Categorical) به متغیرهای عددی (Numerical) می پردازیم.


متغیرهای Categorical

ساده و خلاصه، بر خلاف داده های عددی (Numerical)، برخی دادi ها به صورت رشته ای(string) هستند که به آن ها Categorical می گوییم. برای اینکه بتوانیم از این مقادیر نیز به عنوان ویژگی های ورودی مدل استفاده کنیم، دو روش کلی وجود دارد:

  • جایگزین کردن (replace) داده ها با استفاده از مقادیر دلخواه
  • روش کدبندی وان هات (One Hot Encoding)

برای مثال جدول زیر را در نظر بگیرید.

آموزش روش کدبندی وان هات
آموزش روش کدبندی وان هات

این اطلاعات مربوط به تعدادی آگهی فروش خودروی پژو 207 صفرکیلومتر در اواخر مرداد 1400 است. می خواهیم یک مدل ماشین لرنینگ بسازیم که بر پایه این اطلاعات بتواند قیمت مناسب برای یک خودرو پژو 207 صفرکیلومتر را پیش بینی کند.

اما همانطور که مشخص است، به غیر از ستون های مربوط به سال (year)، رنگ (color)، جعبه دنده (gearbox) و امکانات جانبی (option) این خودرو ها تفاوت دیگری با هم ندارند. به بیان دیگر، داده های موجود در این ستون ها به صورت غیرعددی و Categorical هستند.

آموزش وان هات انکودینگ
آموزش وان هات انکودینگ

همانطور که گفته شد دو روش کلی برای قابل استفاده کردن این داده ها وجود دارد:

  • جایگزین کردن (replace) داده ها با استفاده از مقادیر دلخواه
  • روش کدبندی وان هات (One Hot Encoding)

در روش replace کردن همانطور که از نام این روش مشخص است هر عبارت رشته ای را با یک مقدار عددی دلخواه جایگزین می کنیم. مثلا به جای Grey عدد 1، به جای White عدد 2 و...

اما روش اصولی تر استفاده از One Hot Encoding و ساخت Dummy variables است. برای این کار ستونی که حاوی این مقادیر هست را به تعداد تنوع داده های به ستون های حاوی صفر و یک تبدیل می کنیم.

مثلا با توجه به تنوع داده های ستون color که حاوی انواع Grey, White, Black, Silver، 4 ستون خواهیم داشت.

 به زبان ساده One Hot Encoding
به زبان ساده One Hot Encoding

همچنین برای ستون gearbox دو ستون Manual و Automatic و برای option نیز دو ستون Typical و Panoramic ساخته می شود.

آموزش One Hot Encoding به زبان ساده
آموزش One Hot Encoding به زبان ساده
آموزش روش کدبندی وان هات به زبان ساده
آموزش روش کدبندی وان هات به زبان ساده

با انجام این کار می توانیم در ادامه از این مقادیر نیز به عنوان ویژگی های ورودی مدل استفاده کنیم.

آموزش روش  وان هات در ماشین لرنینگ
آموزش روش وان هات در ماشین لرنینگ


آموزش پیاده سازی روش کدبندی وان هات (One Hot Encoding) با استفاده از زبان پایتون و کتابخانه Pandas

ابتدا کتابخانه پانداز را فراخوانی می کنیم

import pandas as pd

سپس با استفاده از امکانات پانداز، فایل CSV مربوط به اطلاعات خودروها را می خوانیم.

cars_data = pd.read_csv(&quotPeugeot207.csv&quot)

با استفاده از ()unique. می توانیم انواع داده های موجود در یک ستون را مشاهده کنیم. برای مثال انواع داده های موجود در ستون color در نتیجه اجرای کد زیر نشان داده خواهند شد.

cars_data[&quotcolor&quot].unique()

در ادامه قصد داریم بر روی ستون color و مقادیر آن One Hot Encoding را اجرا کنیم.

colors = pd.get_dummies(cars_data[&quotcolor&quot]) colors

خط اول One Hot Encoding را بر روی ستون color اجرا می کنیم و نتیجه آن را داخل متغیر colors می ریزیم.

نتیجه اجرای خط دوم، نمایش داده های موجود در colors است.

 متغیرهای Categorical
متغیرهای Categorical

در ادامه با استفاده از کد زیر، colors را به جدول اصلی اضافه می کنیم.

cars_data = pd.concat([cars_data,colors],axis=1)

نتیجه این بخش با استفاده از کد زیر نشان داده می شود.

cars_data
آموزش پیاده‌سازی کدبندی One-Hot در پایتون
آموزش پیاده‌سازی کدبندی One-Hot در پایتون

همانطور که مشخص است که بر اساس تعداد و اسامی رنگ های موجود در ستون color، ستون هایی به جدول انتهای جدول اضافه شده اند. مقادیر این ستون ها صفر یا یک است. «صفر» به معنی اینکه آن ردیف از جدول دارای آن مقدار نیست و «یک» به معنی اینکه آن مقدار را دارد.

برای مثال در ردیف اول به دلیل آن رنگ خودروی موردنظر، Grey است، در 4 ستون آخر نیز تنها مقدار ستون Grey یک است و سایر ستون ها صفر هستند.

به همین ترتیب برای ستون های gearbox و option نیز، کدبندی وان هات به صورت زیر انجام می شود.

gearbox_types = pd.get_dummies(cars_data[&quotgearbox&quot]) cars_data = pd.concat([cars_data,gearbox_types],axis=1) cars_data
«یادگیری ماشین» (Machine Learning) کدبندی One-Hot
«یادگیری ماشین» (Machine Learning) کدبندی One-Hot
options = pd.get_dummies(cars_data[&quotoption&quot]) cars_data = pd.concat([cars_data,options],axis=1) cars_data
کدبندی One-Hot
کدبندی One-Hot

در پایان و در نتیجه اجرای تمامی کدهای بالا، جدول به صورت زیر خواهد بود.

 پیاده‌سازی کدبندی One-Hot در پایتون
پیاده‌سازی کدبندی One-Hot در پایتون


لینک دانلود دیتاست:

https://www.kaggle.com/alifallahi1/simple-peugeot207-pricelist

لینک دانلود کد:

https://www.kaggle.com/alifallahi1/peugeot207-notebook<br/>

آموزش ماشین لرنینگ
آنچنان رفتم كه خود می خواستم
شاید از این پست‌ها خوشتان بیاید