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