Clasificación SVM con Kernel Personalizado

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, aprenderemos a usar Máquinas de Vectores de Soporte (SVM) para clasificar una muestra usando un kernel personalizado. Usaremos la biblioteca scikit-learn de Python para realizar la clasificación SVM con un kernel personalizado. La SVM es un algoritmo de aprendizaje automático popular utilizado para clasificación, regresión y detección de valores atípicos. La SVM funciona creando un límite o una línea (hiperplano) que separa los datos en 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"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/inspection("Inspection") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/inspection -.-> lab-49097{{"Clasificación SVM con Kernel Personalizado"}} ml/sklearn -.-> lab-49097{{"Clasificación SVM con Kernel Personalizado"}} end

Importar bibliotecas

En este paso, importaremos las bibliotecas necesarias para este laboratorio. Usaremos numpy, matplotlib, scikit-learn y DecisionBoundaryDisplay.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.inspection import DecisionBoundaryDisplay

Cargar datos

En este paso, cargaremos el conjunto de datos iris usando el módulo datasets de scikit-learn. Seleccionaremos las primeras dos características del conjunto de datos y la asignaremos a la variable X. También asignaremos la variable objetivo a Y.

iris = datasets.load_iris()
X = iris.data[:, :2]
Y = iris.target

Crear un kernel personalizado

En este paso, crearemos un kernel personalizado. El kernel personalizado será el producto punto de dos matrices. Crearemos una matriz M con los valores [[2, 0], [0, 1.0]]. Luego multiplicaremos las matrices X e Y por M y tomaremos su producto punto.

def my_kernel(X, Y):
    """
    Creamos un kernel personalizado:

                 (2  0)
    k(X, Y) = X  (    ) Y.T
                 (0  1)
    """
    M = np.array([[2, 0], [0, 1.0]])
    return np.dot(np.dot(X, M), Y.T)

Crear clasificador SVM

En este paso, crearemos una instancia del clasificador SVM y ajustaremos nuestros datos. Usaremos el kernel personalizado creado en el paso anterior.

clf = svm.SVC(kernel=my_kernel)
clf.fit(X, Y)

Graficar el límite de decisión

En este paso, graficaremos la superficie de decisión y los vectores de soporte. Usaremos el módulo DecisionBoundaryDisplay del módulo de inspección de scikit-learn para graficar el límite de decisión. También graficaremos los puntos de entrenamiento en un diagrama de dispersión.

ax = plt.gca()
DecisionBoundaryDisplay.from_estimator(
    clf,
    X,
    cmap=plt.cm.Paired,
    ax=ax,
    response_method="predict",
    plot_method="pcolormesh",
    shading="auto",
)

plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired, edgecolors="k")
plt.title("3-Class classification using Support Vector Machine with custom kernel")
plt.axis("tight")
plt.show()

Resumen

En este laboratorio, aprendimos cómo usar Máquinas de Vectores de Soporte (SVM) para clasificar una muestra usando un kernel personalizado. Usamos la biblioteca scikit-learn para realizar la clasificación SVM con un kernel personalizado. Cargamos el conjunto de datos iris, creamos un kernel personalizado, creamos una instancia del clasificador SVM y ajustamos nuestros datos, y graficamos el límite de decisión y los vectores de soporte. La SVM es un algoritmo de aprendizaje automático popular utilizado para clasificación, regresión y detección de valores atípicos.