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

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 explorer comment utiliser la classification par processus gaussien (GPC) sur l'ensemble de données Iris. L'ensemble de données Iris est un ensemble de données célèbre qui contient des informations sur la longueur et la largeur des sépales et des pétales de trois espèces différentes de fleurs Iris. Nous allons utiliser scikit-learn pour implémenter la GPC, qui est une approche probabiliste pour les tâches de classification.

Conseils sur la VM

Une fois le démarrage de la VM 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 des commentaires après la session, et nous réglerons 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-49140{{"Classification par processus gaussien sur l'ensemble de données Iris"}} ml/sklearn -.-> lab-49140{{"Classification par processus gaussien sur l'ensemble de données Iris"}} end

Importation des bibliothèques et de l'ensemble de données nécessaires

Tout d'abord, nous allons importer les bibliothèques nécessaires et charger l'ensemble de données Iris à partir de scikit-learn.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.gaussian_process import GaussianProcessClassifier
from sklearn.gaussian_process.kernels import RBF

iris = datasets.load_iris()
X = iris.data[:, :2]  ## nous ne prenons que les deux premières caractéristiques.
y = np.array(iris.target, dtype=int)

Définition de la fonction noyau

Ensuite, nous allons définir la fonction noyau. Dans cet exemple, nous utiliserons le noyau de fonction de base radiale (RBF en anglais). Nous allons définir deux versions du noyau RBF : une version isotrope et une version anisotrope.

kernel = 1.0 * RBF([1.0])
gpc_rbf_isotropic = GaussianProcessClassifier(kernel=kernel).fit(X, y)

kernel = 1.0 * RBF([1.0, 1.0])
gpc_rbf_anisotropic = GaussianProcessClassifier(kernel=kernel).fit(X, y)

Création d'un maillage pour le tracé

Maintenant, nous allons créer un maillage pour le tracé. Le maillage sera utilisé pour tracer les probabilités prédites pour chaque point du maillage. Nous allons également définir la taille d'étape pour le maillage.

h = 0.02  ## taille d'étape dans le maillage

x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))

Traçage des probabilités prédites

Maintenant, nous allons tracer les probabilités prédites pour chaque point du maillage. Nous allons créer deux sous-graphiques : l'un pour le noyau RBF isotrope et l'autre pour le noyau RBF anisotrope. Nous utiliserons la méthode predict_proba pour obtenir les probabilités prédites pour chaque point du maillage. Nous tracerons ensuite les probabilités prédites sous forme d'un graphique en couleur sur le maillage. Nous tracerons également les points d'entraînement pour chaque espèce de fleur Iris.

titles = ["Isotropic RBF", "Anisotropic RBF"]
plt.figure(figsize=(10, 5))
for i, clf in enumerate((gpc_rbf_isotropic, gpc_rbf_anisotropic)):
    ## Plot the predicted probabilities. For that, we will assign a color to
    ## each point in the mesh [x_min, m_max]x[y_min, y_max].
    plt.subplot(1, 2, i + 1)

    Z = clf.predict_proba(np.c_[xx.ravel(), yy.ravel()])

    ## Put the result into a color plot
    Z = Z.reshape((xx.shape[0], xx.shape[1], 3))
    plt.imshow(Z, extent=(x_min, x_max, y_min, y_max), origin="lower")

    ## Plot also the training points
    plt.scatter(X[:, 0], X[:, 1], c=np.array(["r", "g", "b"])[y], edgecolors=(0, 0, 0))
    plt.xlabel("Sepal length")
    plt.ylabel("Sepal width")
    plt.xlim(xx.min(), xx.max())
    plt.ylim(yy.min(), yy.max())
    plt.xticks(())
    plt.yticks(())
    plt.title(
        "%s, LML: %.3f" % (titles[i], clf.log_marginal_likelihood(clf.kernel_.theta))
    )

plt.tight_layout()
plt.show()

Sommaire

Dans ce laboratoire, nous avons exploré la manière d'utiliser la classification par processus gaussien (GPC en anglais) sur l'ensemble de données Iris à l'aide de scikit-learn. Nous avons défini deux versions du noyau de fonction de base radiale (RBF en anglais), une version isotrope et une version anisotrope. Nous avons ensuite créé un maillage pour tracer les probabilités prédites pour chaque point du maillage et tracé les probabilités prédites sous forme d'un graphique en couleur sur le maillage. Enfin, nous avons tracé les points d'entraînement pour chaque espèce de fleur Iris.