Clasificación SVM no lineal

Machine LearningMachine LearningBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Este laboratorio lo guiará a través del proceso de realizar clasificación binaria utilizando una Máquina de Vectores de Soporte (Support Vector Machine, SVM) no lineal con un kernel de Función de Base Radial (Radial Basis Function, RBF). El objetivo a predecir es una operación XOR de las entradas. El mapa de colores ilustra la función de decisión aprendida por la SVM. Utilizaremos la biblioteca scikit-learn de Python para esta tarea.

Consejos para la MV

Después de que la máquina virtual (VM) haya terminado de iniciar, haga clic en la esquina superior izquierda para cambiar a la pestaña Notebook y acceder a Jupyter Notebook para practicar.

A veces, es posible que deba esperar unos segundos para que Jupyter Notebook termine de cargar. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si encuentra problemas durante el aprendizaje, no dude en preguntar a Labby. Proporcione comentarios después de la sesión y resolveremos rápidamente el problema para usted.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49309{{"Clasificación SVM no lineal"}} end

Importar las bibliotecas necesarias

En este paso, importaremos las bibliotecas necesarias para esta tarea. Utilizaremos numpy y matplotlib para la visualización de datos, y scikit-learn para la clasificación con SVM.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm

Generar datos

En este paso, generaremos los datos para entrenar y probar el clasificador SVM. Generaremos 300 puntos de datos aleatorios con dos características. El objetivo a predecir es una operación XOR de las entradas.

np.random.seed(0)
X = np.random.randn(300, 2)
Y = np.logical_xor(X[:, 0] > 0, X[:, 1] > 0)

Entrenar el modelo

En este paso, entrenaremos el clasificador SVM con un kernel RBF utilizando los datos generados.

clf = svm.NuSVC(gamma="auto")
clf.fit(X, Y)

Visualizar la función de decisión

En este paso, visualizaremos la función de decisión aprendida por la SVM. Crearemos una cuadrícula de puntos y utilizaremos el clasificador SVM para predecir la clase de cada punto. Luego, graficaremos los puntos con sus respectivas clases y el límite de decisión aprendido por la SVM.

xx, yy = np.meshgrid(np.linspace(-3, 3, 500), np.linspace(-3, 3, 500))
Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

plt.imshow(
    Z,
    interpolation="nearest",
    extent=(xx.min(), xx.max(), yy.min(), yy.max()),
    aspect="auto",
    origin="lower",
    cmap=plt.cm.PuOr_r,
)
contours = plt.contour(xx, yy, Z, levels=[0], linewidths=2, linestyles="dashed")
plt.scatter(X[:, 0], X[:, 1], s=30, c=Y, cmap=plt.cm.Paired, edgecolors="k")
plt.xticks(())
plt.yticks(())
plt.axis([-3, 3, -3, 3])
plt.show()

Resumen

En este laboratorio, aprendimos cómo realizar una clasificación binaria utilizando una SVM no lineal con un kernel RBF. Generamos datos con dos características y un objetivo XOR para predecir. Entrenamos el clasificador SVM utilizando los datos generados y visualizamos la función de decisión aprendida por la SVM.