SVM: Hiperplano Separador de Márgen Máximo

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

En este laboratorio, usaremos scikit-learn para crear un conjunto de datos separable en dos clases y graficar el hiperplano separador de márgen máximo usando un clasificador de Máquinas de Soporte Vectorial (SVM) con un kernel lineal. La SVM es un algoritmo de clasificación poderoso que encuentra el mejor límite o hiperplano que separa los datos en diferentes clases mientras maximiza el margen entre las clases.

Consejos sobre la VM

Una vez que se haya iniciado la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/inspection("Inspection") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/inspection -.-> lab-49284{{"SVM: Hiperplano Separador de Márgen Máximo"}} sklearn/datasets -.-> lab-49284{{"SVM: Hiperplano Separador de Márgen Máximo"}} ml/sklearn -.-> lab-49284{{"SVM: Hiperplano Separador de Márgen Máximo"}} end

Crear un conjunto de datos separable en dos clases

Para crear un conjunto de datos separable en dos clases, usaremos la función make_blobs() de scikit-learn. Esta función genera manchas gaussianas isotrópicas para agrupamiento y clasificación. Crearemos 40 muestras con dos centros y una semilla aleatoria de 6. También graficaremos los puntos de datos usando matplotlib.

import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs

## create a two-class separable dataset
X, y = make_blobs(n_samples=40, centers=2, random_state=6)

## plot the data points
plt.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=plt.cm.Paired)
plt.show()

Ajustar el modelo de SVM

A continuación, ajustaremos el modelo de SVM a nuestro conjunto de datos usando un kernel lineal y un parámetro de regularización de 1000. Usaremos la función svm.SVC() de scikit-learn para crear el clasificador de SVM.

from sklearn import svm

## fit the SVM model
clf = svm.SVC(kernel="linear", C=1000)
clf.fit(X, y)

Graficar el hiperplano separador de márgen máximo

Para graficar el hiperplano separador de márgen máximo, usaremos la función DecisionBoundaryDisplay.from_estimator() de scikit-learn. Esta función grafica la función de decisión y los vectores de soporte del clasificador de SVM. También graficaremos los vectores de soporte como círculos sin relleno y con un borde negro.

from sklearn.inspection import DecisionBoundaryDisplay

## plot the decision function and support vectors
ax = plt.gca()
DecisionBoundaryDisplay.from_estimator(
    clf,
    X,
    plot_method="contour",
    colors="k",
    levels=[-1, 0, 1],
    alpha=0.5,
    linestyles=["--", "-", "--"],
    ax=ax,
)
ax.scatter(
    clf.support_vectors_[:, 0],
    clf.support_vectors_[:, 1],
    s=100,
    linewidth=1,
    facecolors="none",
    edgecolors="k",
)
plt.show()

Resumen

En este laboratorio, aprendimos cómo crear un conjunto de datos separable en dos clases, ajustar un modelo de SVM usando un kernel lineal y graficar el hiperplano separador de márgen máximo usando scikit-learn. La SVM es un algoritmo de clasificación poderoso que se puede utilizar para una variedad de aplicaciones, incluyendo clasificación de imágenes, clasificación de texto y bioinformática.