Creación de kernel lineal SVM en Python

Requisito previo: SVM

Vamos a crear una SVM de kernel lineal utilizando la biblioteca sklearn de Python y el conjunto de datos Iris que se puede encontrar en la biblioteca de conjuntos de datos de Python.

Kernel lineal se usa cuando los datos son linealmente separables, es decir, se pueden separar usando una sola línea. Es uno de los núcleos más comunes que se utilizan. Se usa principalmente cuando hay una gran cantidad de características en un conjunto de datos en particular. Uno de los ejemplos donde hay muchas características es la Clasificación de texto , ya que cada alfabeto es una característica nueva. Por lo tanto, usamos principalmente el kernel lineal en la clasificación de texto.

Nota : la conexión a Internet debe ser estable mientras se ejecuta el siguiente código porque implica la descarga de datos.

En la imagen de arriba, hay dos conjuntos de funciones, las funciones » azules » y las funciones » amarillas «. Dado que estos se pueden separar fácilmente o, en otras palabras, son separables linealmente, por lo que el Kernel lineal se puede usar aquí.

Ventajas de usar Kernel Lineal:

1. Entrenar una SVM con un kernel lineal es más rápido que con cualquier otro kernel.

2. Al entrenar un SVM con un Kernel Lineal, solo se requiere la optimización del parámetro de Regularización C. Por otro lado, cuando se entrena con otros núcleos, existe la necesidad de optimizar el parámetro γ , lo que significa que realizar una búsqueda en cuadrícula generalmente llevará más tiempo.

# 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()

Salida: aquí todas las características se separan mediante líneas simples, lo que representa el Kernel lineal.

Publicación traducida automáticamente

Artículo escrito por Prateek Bajaj y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *