ایجاد SVM با کرنل خطی در پایتون

بفرست برای دوستت
Telegram
WhatsApp
ایجاد SVM با کرنل خطی در پایتون

فهرست مطالب

بیایید با استفاده از کتابخانه sklearn پایتون و مجموعه داده‌های Iris که در کتابخانه داده‌های پایتون یافت می‌شود، یک SVM با کرنل خطی ایجاد کنیم.

کرنل خطی زمانی استفاده می‌شود که داده‌ها به صورت خطی جداپذیر باشند، یعنی بتوان با استفاده از یک خط آن‌ها را جدا کرد. این یکی از رایج‌ترین کرنل‌های استفاده شده است. اغلب زمانی استفاده می‌شود که تعداد زیادی ویژگی در یک مجموعه داده خاص وجود داشته باشد. یکی از مثال‌هایی که ویژگی‌های زیادی دارد، طبقه‌بندی متن است، زیرا هر حرف الفبا یک ویژگی جدید است. بنابراین ما اغلب در طبقه‌بندی متن از کرنل خطی استفاده می‌کنیم.

توجه: برای اجرای کد زیر باید اینترنت متصل باشید زیرا شامل دانلود داده‌ها می‌شود.

در تصویر بالا، دو مجموعه ویژگی وجود دارد: ویژگی‌های “آبی” و ویژگی‌های “زرد”. از آنجایی که این‌ها به راحتی قابل جداسازی هستند یا به عبارت دیگر، به صورت خطی جداپذیر هستند، بنابراین می‌توان از کرنل خطی در اینجا استفاده کرد.

  طبقه بندی (Classification) چیست و انواع الگوریتم های آن

مزایای استفاده از کرنل خطی

1. آموزش SVM با کرنل خطی سریع‌تر از آموزش با هر کرنل دیگری است.

2. هنگام آموزش SVM با کرنل خطی، تنها بهینه‌سازی پارامتر تنظیم C لازم است. از طرف دیگر، هنگام آموزش با کرنل‌های دیگر، نیاز به بهینه‌سازی پارامتر γ وجود دارد که این به معنای انجام جستجوی شبکه‌ای است که معمولاً زمان بیشتری طلب می‌کند. 

# Import the Libraries 
import numpy as np 
import matplotlib.pyplot as plt 
from sklearn import svm, datasets 

# Import some Data from the iris Data Set 
iris = datasets.load_iris() 

# Take only the first two features of Data. 
# To avoid the slicing, Two-Dim Dataset can be used 

X = iris.data[:, :2] 
y = iris.target 

# C is the SVM regularization parameter 
C = 1.0

# Create an Instance of SVM and Fit out the data. 
# Data is not scaled so as to be able to plot the support vectors 
svc = svm.SVC(kernel ='linear', C = 1).fit(X, y) 

# create a mesh to plot 
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
h = (x_max / x_min)/100
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), 
		np.arange(y_min, y_max, h)) 

# Plot the data for Proper Visual Representation 
plt.subplot(1, 1, 1) 

# Predict the result by giving Data to the model 
Z = svc.predict(np.c_[xx.ravel(), yy.ravel()]) 
Z = Z.reshape(xx.shape) 
plt.contourf(xx, yy, Z, cmap = plt.cm.Paired, alpha = 0.8) 

plt.scatter(X[:, 0], X[:, 1], c = y, cmap = plt.cm.Paired) 
plt.xlabel('Sepal length') 
plt.ylabel('Sepal width') 
plt.xlim(xx.min(), xx.max()) 
plt.title('SVC with linear kernel') 

# Output the Plot 
plt.show() 

در اینجا، تمام ویژگی‌ها با استفاده از خطوط ساده جدا شده‌اند، که این نشان‌دهنده کرنل خطی است.

  رگرسیون لجستیک با استفاده از پایتون

Rating 0.00 from 0 votes

لیست دروس دوره

آموزش پیشنهادی و مکمل

اگر سوالی در مورد این درس دارید، در کادر زیر بنویسید.

اشتراک در
اطلاع از
guest
0 نظرات
قدیمی‌ترین
تازه‌ترین بیشترین رأی
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
سبد خرید

دوره رایگان یادگیری عمیق مقدماتی

برای دیدن نوشته هایی که دنبال آن هستید تایپ کنید.
×