Clasificación de procesos gaussianos en el conjunto de datos XOR

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, revisaremos un ejemplo de clasificación de procesos gaussianos (GPC) en el conjunto de datos XOR utilizando scikit-learn. Compararemos los resultados obtenidos al utilizar un kernel estacionario, isotrópico (RBF) y un kernel no estacionario (DotProduct).

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 las 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/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/gaussian_process("Gaussian Processes") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/gaussian_process -.-> lab-49142{{"Clasificación de procesos gaussianos en el conjunto de datos XOR"}} ml/sklearn -.-> lab-49142{{"Clasificación de procesos gaussianos en el conjunto de datos XOR"}} end

Importando bibliotecas

En este paso, importaremos las bibliotecas necesarias para este laboratorio.

import numpy as np
import matplotlib.pyplot as plt

from sklearn.gaussian_process import GaussianProcessClassifier
from sklearn.gaussian_process.kernels import RBF, DotProduct

Creando el conjunto de datos XOR

En este paso, crearemos un conjunto de datos XOR utilizando numpy. Utilizaremos la función logical_xor para crear las etiquetas basadas en las características de entrada.

xx, yy = np.meshgrid(np.linspace(-3, 3, 50), np.linspace(-3, 3, 50))
rng = np.random.RandomState(0)
X = rng.randn(200, 2)
Y = np.logical_xor(X[:, 0] > 0, X[:, 1] > 0)

Ajustando el modelo

En este paso, ajustaremos el clasificador de procesos gaussianos al conjunto de datos. Utilizaremos dos kernels diferentes para la comparación: RBF y DotProduct.

plt.figure(figsize=(10, 5))
kernels = [1.0 * RBF(length_scale=1.15), 1.0 * DotProduct(sigma_0=1.0) ** 2]
for i, kernel in enumerate(kernels):
    clf = GaussianProcessClassifier(kernel=kernel, warm_start=True).fit(X, Y)

    ## plot the decision function for each datapoint on the grid
    Z = clf.predict_proba(np.vstack((xx.ravel(), yy.ravel())).T)[:, 1]
    Z = Z.reshape(xx.shape)

    plt.subplot(1, 2, i + 1)
    image = 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.5], linewidths=2, colors=["k"])
    plt.scatter(X[:, 0], X[:, 1], s=30, c=Y, cmap=plt.cm.Paired, edgecolors=(0, 0, 0))
    plt.xticks(())
    plt.yticks(())
    plt.axis([-3, 3, -3, 3])
    plt.colorbar(image)
    plt.title(
        "%s\n Log-Marginal-Likelihood:%.3f"
        % (clf.kernel_, clf.log_marginal_likelihood(clf.kernel_.theta)),
        fontsize=12,
    )

plt.tight_layout()
plt.show()

Visualizando los resultados

En este paso, visualizaremos los resultados obtenidos al ajustar el modelo. Graficaremos la función de decisión para cada punto de datos en la cuadrícula y un diagrama de dispersión para las características de entrada.

Resumen

En este laboratorio, revisamos un ejemplo de clasificación de procesos gaussianos (GPC) en un conjunto de datos XOR utilizando scikit-learn. Comparamos los resultados obtenidos al utilizar un kernel estacionario e isotrópico (RBF) y un kernel no estacionario (DotProduct).