ماشین بردار پشتیبان در پایتون (SVM in python)

در این جلسه تیم کدگیت را با آموزش ماشین بردار پشتیبان در پایتون (SVM) همراهی کنید. SVM یکی از الگوریتم‌های طبقه بندی بوده که بدلیل سادگی می‌توان در ابعاد بالا نیز از آن استفاده کرد. این جلسه به توضیح و پیاده سازی این الگوریتم خواهیم پرداخت. پیشنهاد می‌کنیم پیش از مطالعه این جلسه، پیش‌نیاز‌های زیر را بررسی کنید:

الگوریتم ماشین بردار پشتیبان

یکی از الگوریتم ها و روشهای بسیار رایج در حوزه دسته بندی داده ها، الگوریتم SVM یا ماشین بردار پشتیبان است. SVM برای مسائل رگرسیون نیز کاربرد دارد. اما بیشتر در مسائل طبقه بندی از آن استفاده می‌کنند. در الگوریتم SVM ، هر داده را به عنوان یک نقطه در فضای n-بعدی ترسیم می کنیم (n تعداد ویژگی های شماست) که ارزش هر ویژگی، مقدار نقطه، در مختصات آن است. سپس، طبقه بندی را با یافتن سطح (صفحه‌ای) که دو کلاس را به خوبی از هم متمایز می کند، انجام می دهیم.

ماشین بردار پشتیبان در پایتون

ماشین بردار پشتیبان در پایتون

برای پیاده سازی SVM در پایتون ما از کتابخانه sklearn استفاده خواهیم کرد. دیتایی که الگوریتم SVM را بر روی آن پیاده سازی خواهیم کرد، طبقه بندی قیمت موبایل (دانلود دیتاست) می‌باشد. دیتاست ما شامل دو هزار (2000) سطر و بیست (20) ستون می‌باشد. ستون‌های دیتاست ما به صورت زیر می‌باشد:

  • battery_power: کل انرژی باتری به mAh
  • blue: دارای بلوتوث می‌باشد یا خیر.
  • clock_speed: سرعتی که ریزپردازنده دستورالعمل ها را اجرا می کند.
  • dual_sim: تک سیم کارت و دو سیم کارت بودن موبایل
  • FC: مخفف Front Camera یا دوربین جلو بوده و مقدار این ستون به مگاپیکسل می‌باشد.
  • four_g: قابلیت g4 را دارد یا خیر.
  • int_memory: مخفف internal memory بوده و مقدار آن به گیگابایت می‌باشد.
  • m_dep: عرض تلفن همراه به سانتی متر (Mobile depth)
  • mobile_wt: وزن موبایل.
  • n_cores: تعداد هسته‌های پردازنده
  • Pc: مخفف Primary camera یا دوربین اصلی بوده و مقدار آن به مگاپیکسل است.
  • px_height: وضوح تصویر (ارتفاع)
  • px_width: وضوح تصویر (عرض)
  • ram: این ستون برای همه ما شفاف هستJ
  • sc_h: ارتفاع صفحه نمایش تلفن همراه در سانتی متر
  • sc_w: عرض صفحه تلفن همراه در سانتی متر
  • talk_time: طولانی ترین زمانی که یک بار شارژ باتری دوام می‌آورد (هنگام استفاده).
  • three_g: پشتیبانی از 3g
  • touch_screen: صفحه لمسی دارد یا خیر
  • wifi: پشتیبانی از wifi
  • price_range: رنج قیمت تلفن همراه. در این دیتاست تلفن‌های همراه در چهار (4) رنج قیمت  با توجه به قابلیت‌های موبایل قرار می‌گیرند.
    • رنج قیمت صفر به معنی قیمت پایین است.
    • رنج قیمت 1 به معنی قیمت متوسط است.
    • رنج قیمت 2 به معنی قیمت بالا است.
    • o        رنج قیمت 3 به معنی خیلی بالا می‌باشد.
بیشتر بخوانید:  تبدیل آبی رنگ در پایتون (convert blue colored image)

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

بخشی از دیتا به صورت زیر می‌باشد:

ماشین بردار پشتیبان در پایتون

توابع describe و info را برای بدست آوردن اطلاعات کلی از دیتا صدا می‌زنیم:

خروجی توابع بالا به صورت زیر است:

بیشتر بخوانید:  تبدیل لگاریتمی در پایتون (Logarithmic transformation)
ماشین بردار پشتیبان در پایتون

از روی میانگین بدست امده از ستون‌ها در تصویر بالا، می‌توان به این نتیجه رسید دیتا نیازمند نرمال سازی است. دیتا خود را با کد زیر نرمال می‌کنیم:

پیاده سازی الگوریتم SVM

در قسمت قبل دیتا را وارد برنامه و آن را نرمال کردیم. حال نیاز داریم دیتا را به دو قسمت test و train تقسیم کرده و سپس الگوریتم SVM را روی آن پیاده سازی کنیم.

ابتدا دیتا را به دو قسمت Test و Train تقسیم می‌کنیم:

حال نوبت به پیاده سازی الگوریتم SVM رسیده است. به کمک کتابخانه sklearn این الگوریتم را پیاده سازی می‌کنیم:

حال برای ارزیابی الگوریتم SVM کد زیر را می‌زنیم:

خروجی کد بالا برابر است با:

test accuracy: 0.8375

خروجی ما خوب نیست. با چند روش می‌توانیم نتیجه الگوریتم را بهتر کنیم:

  1. کاهش ابعاد دیتا
  2. نرمال سازی
  3. پیدا کردن بهترین پارامترها برای الگوریتم SVM (پارامترهایی مانند گاما و …)

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

اگر سوالی در خصوص ماشین بردار پشتیبان در پایتون دارید در قسمت کامنت سوال خود را مطرح کنید تا پاسخگوی شما باشیم.

پسورد: www.codegate.ir

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *