Clasificación de vecinos más cercanos

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, usaremos el algoritmo de clasificación de Vecinos Cercanos para clasificar puntos de datos en un espacio bidimensional. Usaremos el conjunto de datos Iris, que es un conjunto de datos comúnmente utilizado en el aprendizaje automático. Visualizaremos los límites de decisión para cada clase y observaremos cómo el algoritmo se comporta cuando se usan diferentes pesos.

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 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 comentarios después de la sesión y lo resolveremos rápidamente para usted.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/inspection("Inspection") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/inspection -.-> lab-49078{{"Clasificación de vecinos más cercanos"}} ml/sklearn -.-> lab-49078{{"Clasificación de vecinos más cercanos"}} end

Importar las bibliotecas necesarias

Comenzaremos importando las bibliotecas necesarias, que incluyen matplotlib, seaborn, ListedColormap, datasets, neighbors y DecisionBoundaryDisplay de sklearn.

import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.colors import ListedColormap
from sklearn import neighbors, datasets
from sklearn.inspection import DecisionBoundaryDisplay

Cargar el conjunto de datos Iris

Luego cargaremos el conjunto de datos Iris usando la función load_iris() del módulo datasets de sklearn.

iris = datasets.load_iris()

Preparar los datos

Tomaremos solo las primeras dos características del conjunto de datos Iris, que son la longitud del sépalo y el ancho del sépalo. Luego dividiremos los datos en la matriz de características X y el vector objetivo y.

X = iris.data[:, :2]
y = iris.target

Definir las mapas de colores

Definiremos los mapas de colores que se usarán para trazar los límites de decisión y los puntos de entrenamiento.

cmap_light = ListedColormap(["naranja", "cian", "azul de margarita"])
cmap_bold = ["naranja oscuro", "c", "azul oscuro"]

Visualizar los límites de decisión

Recorreremos dos valores diferentes de peso, "uniforme" y "distancia", y graficaremos los límites de decisión para cada valor de peso. Usaremos la clase KNeighborsClassifier del módulo neighbors para realizar la clasificación.

n_neighbors = 15

for weights in ["uniforme", "distancia"]:
    ## crear una instancia del clasificador de vecinos y ajustar los datos
    clf = neighbors.KNeighborsClassifier(n_neighbors, weights=weights)
    clf.fit(X, y)

    ## graficar los límites de decisión
    _, ax = plt.subplots()
    DecisionBoundaryDisplay.from_estimator(
        clf,
        X,
        cmap=cmap_light,
        ax=ax,
        response_method="predict",
        plot_method="pcolormesh",
        xlabel=iris.feature_names[0],
        ylabel=iris.feature_names[1],
        shading="auto",
    )

    ## graficar los puntos de entrenamiento
    sns.scatterplot(
        x=X[:, 0],
        y=X[:, 1],
        hue=iris.target_names[y],
        palette=cmap_bold,
        alpha=1.0,
        edgecolor="black",
    )
    plt.title(
        "Clasificación de 3 clases (k = %i, pesos = '%s')" % (n_neighbors, weights)
    )

plt.show()

Interpretar los resultados

Podemos observar los límites de decisión para cada valor de peso y cómo se desempeña el algoritmo en la clasificación de los puntos de datos. El valor de peso "uniforme" asume que todos los vecinos tienen el mismo peso, mientras que el valor de peso "distancia" asigna más peso a los vecinos más cercanos. Podemos ver que los límites de decisión son más suaves con el valor de peso "distancia", lo que indica una clasificación más precisa.

Resumen

En este laboratorio, aprendimos cómo usar el algoritmo de clasificación de vecinos más cercanos para clasificar puntos de datos en un espacio bidimensional. Usamos el conjunto de datos Iris para visualizar los límites de decisión para cada clase y observamos cómo se desempeña el algoritmo cuando se usan diferentes valores de peso. También aprendimos cómo interpretar los resultados y observamos que el valor de peso "distancia" se desempeña mejor en la clasificación de los puntos de datos.