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.
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.