Classification par processus gaussien sur l'ensemble de données XOR

Machine LearningMachine LearningBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons étudier un exemple de classification par processus gaussien (GPC) sur l'ensemble de données XOR à l'aide de scikit-learn. Nous comparerons les résultats obtenus en utilisant un noyau stationnaire et isotrope (RBF) et un noyau non stationnaire (DotProduct).

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.


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{{"Classification par processus gaussien sur l'ensemble de données XOR"}} ml/sklearn -.-> lab-49142{{"Classification par processus gaussien sur l'ensemble de données XOR"}} end

Importation des bibliothèques

Dans cette étape, nous allons importer les bibliothèques nécessaires pour ce laboratoire.

import numpy as np
import matplotlib.pyplot as plt

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

Création de l'ensemble de données XOR

Dans cette étape, nous allons créer un ensemble de données XOR à l'aide de numpy. Nous utiliserons la fonction logical_xor pour créer des étiquettes basées sur les caractéristiques d'entrée.

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)

Ajustement du modèle

Dans cette étape, nous allons ajuster le classifieur par processus gaussien à l'ensemble de données. Nous utiliserons deux noyaux différents pour la comparaison - RBF et 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)

    ## trace la fonction de décision pour chaque point de données sur la grille
    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-Vraisemblance-Marginale:%.3f"
        % (clf.kernel_, clf.log_marginal_likelihood(clf.kernel_.theta)),
        fontsize=12,
    )

plt.tight_layout()
plt.show()

Visualisation des résultats

Dans cette étape, nous allons visualiser les résultats obtenus en ajustant le modèle. Nous tracerons la fonction de décision pour chaque point de données sur la grille et un graphique en points pour les caractéristiques d'entrée.

Sommaire

Dans ce laboratoire, nous avons étudié un exemple de classification par processus gaussien (GPC) sur un ensemble de données XOR à l'aide de scikit-learn. Nous avons comparé les résultats obtenus en utilisant un noyau stationnaire et isotrope (RBF) et un noyau non stationnaire (DotProduct).