Clasificación por Procesos Gausianos en el Conjunto de Datos Iris

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, exploraremos cómo utilizar la Clasificación por Procesos Gaussianos (GPC, por sus siglas en inglés) en el conjunto de datos Iris. El conjunto de datos Iris es un conjunto de datos famoso que contiene información sobre la longitud y el ancho del sépalo y el pétalo de tres diferentes especies de flores Iris. Utilizaremos scikit-learn para implementar la GPC, que es un enfoque probabilístico para tareas de clasificación.

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 ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/gaussian_process("Gaussian Processes") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/gaussian_process -.-> lab-49140{{"Clasificación por Procesos Gausianos en el Conjunto de Datos Iris"}} ml/sklearn -.-> lab-49140{{"Clasificación por Procesos Gausianos en el Conjunto de Datos Iris"}} end

Importando las bibliotecas y el conjunto de datos necesarios

Primero, importaremos las bibliotecas necesarias y cargaremos el conjunto de datos Iris 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]  ## solo tomamos las primeras dos características.
y = np.array(iris.target, dtype=int)

Definiendo la función del kernel

A continuación, definiremos la función del kernel. En este ejemplo, usaremos el kernel de Función Básica Radial (RBF, por sus siglas en inglés). Definiremos dos versiones del kernel RBF: una versión isotrópica y una versión anisotrópica.

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)

Creando una malla para graficar

Ahora, crearemos una malla para graficar. La malla se utilizará para graficar las probabilidades predichas para cada punto de la malla. También definiremos el tamaño del paso para la malla.

h = 0.02  ## tamaño del paso en la malla

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

Graficando las probabilidades predichas

Ahora, graficaremos las probabilidades predichas para cada punto de la malla. Crearemos dos subgráficos: uno para el kernel RBF isotrópico y otro para el kernel RBF anisotrópico. Usaremos el método predict_proba para obtener las probabilidades predichas para cada punto de la malla. Luego graficaremos las probabilidades predichas como un gráfico de color en la malla. También graficaremos los puntos de entrenamiento para cada especie de flor 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()

Resumen

En este laboratorio, exploramos cómo usar la Clasificación por Procesos Gausianos (GPC, por sus siglas en inglés) en el conjunto de datos Iris usando scikit-learn. Definimos dos versiones del kernel de Función Básica Radial (RBF, por sus siglas en inglés), una versión isotrópica y una versión anisotrópica. Luego creamos una malla para graficar las probabilidades predichas para cada punto de la malla y graficamos las probabilidades predichas como un gráfico de color en la malla. Finalmente, graficamos los puntos de entrenamiento para cada especie de flor Iris.