در این جلسه تیم کدگیت را با آموزش ماشین بردار پشتیبان در پایتون (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 به معنی خیلی بالا می‌باشد.

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

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_theme()
mobile = pd.read_csv('MobilePrice.csv')

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

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

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

mobile.info()
mobile.describe()

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

class 'pandas.core.frame.DataFrame'>
RangeIndex: 2000 entries, 0 to 1999
Data columns (total 21 columns):
 #   Column         Non-Null Count  Dtype  
---  ------         --------------  -----  
 0   battery_power  2000 non-null   int64  
 1   blue           2000 non-null   int64  
 2   clock_speed    2000 non-null   float64
 3   dual_sim       2000 non-null   int64  
 4   fc             2000 non-null   int64  
 5   four_g         2000 non-null   int64  
 6   int_memory     2000 non-null   int64  
 7   m_dep          2000 non-null   float64
 8   mobile_wt      2000 non-null   int64  
 9   n_cores        2000 non-null   int64  
 10  pc             2000 non-null   int64  
 11  px_height      2000 non-null   int64  
 12  px_width       2000 non-null   int64  
 13  ram            2000 non-null   int64  
 14  sc_h           2000 non-null   int64  
 15  sc_w           2000 non-null   int64  
 16  talk_time      2000 non-null   int64  
 17  three_g        2000 non-null   int64  
 18  touch_screen   2000 non-null   int64  
 19  wifi           2000 non-null   int64  
 20  price_range    2000 non-null   int64  
dtypes: float64(2), int64(19)
ماشین بردار پشتیبان در پایتون

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

y = mobile["price_range"].values
temp=mobile.drop(["price_range"],axis=1)
x = (temp-np.min(temp))/(np.max(temp)-np.min(temp))

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

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

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

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(x,y,test_size=0.20,random_state=1)

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

from sklearn.svm import SVC
svm=SVC(random_state=1)
svm.fit(X_train,y_train)

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

print("test accuracy:",svm.score(X_test,y_test))

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

test accuracy: 0.8375

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

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

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

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

Download “دانلود سورس ماشین بردار پشتیبان در پایتون” SVM-in-Python-www.codegate.ir_.zip – 158 بار دانلود شده است – 1 کیلوبایت

پسورد: www.codegate.ir