Análisis del conjunto de datos de dígitos

Beginner

This tutorial is from open-source community. Access the source code

Introducción

En este laboratorio, exploraremos el conjunto de datos de dígitos de scikit-learn. Este conjunto de datos consta de 1797 imágenes de 8x8 píxeles, cada una representando un dígito manuscrito del 0 al 9. Nuestro objetivo es analizar este conjunto de datos y entender cómo podemos utilizarlo para clasificar dígitos manuscritos utilizando algoritmos de aprendizaje automático.

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.

Importando el conjunto de datos

El primer paso es importar el conjunto de datos de dígitos de scikit-learn utilizando el siguiente código:

from sklearn import datasets

## Carga el conjunto de datos de dígitos
digits = datasets.load_digits()

Visualizando el conjunto de datos

Para entender mejor el conjunto de datos, podemos visualizar una imagen de muestra utilizando matplotlib. El siguiente código muestra el último dígito del conjunto de datos:

import matplotlib.pyplot as plt

## Muestra el último dígito
plt.figure(1, figsize=(3, 3))
plt.imshow(digits.images[-1], cmap=plt.cm.gray_r, interpolation="nearest")
plt.show()

Preparando el conjunto de datos para el aprendizaje automático

Antes de poder entrenar un modelo de aprendizaje automático en el conjunto de datos, necesitamos preparar los datos dividiéndolos en conjuntos de entrenamiento y prueba. Esto se puede hacer utilizando la función train_test_split de scikit-learn:

from sklearn.model_selection import train_test_split

## Divide el conjunto de datos en conjuntos de entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.2, random_state=42)

Entrenando un modelo de aprendizaje automático

Ahora que hemos preparado el conjunto de datos, podemos entrenar un modelo de aprendizaje automático con los datos de entrenamiento. En este ejemplo, usaremos un algoritmo de Máquina de Vectores de Soporte (SVM):

from sklearn.svm import SVC

## Crea el clasificador SVM
clf = SVC(kernel='linear')

## Entrena el clasificador con los datos de entrenamiento
clf.fit(X_train, y_train)

Evaluando el modelo

Para evaluar el rendimiento de nuestro modelo, podemos utilizar la función accuracy_score de scikit-learn:

from sklearn.metrics import accuracy_score

## Predecir las etiquetas del conjunto de prueba
y_pred = clf.predict(X_test)

## Calcular la precisión del modelo
accuracy = accuracy_score(y_test, y_pred)

## Imprimir la precisión del modelo
print("Precisión:", accuracy)

Mejorando el modelo

Si la precisión de nuestro modelo no es satisfactoria, podemos intentar mejorarlo ajustando los hiperparámetros del algoritmo SVM. Por ejemplo, podemos intentar cambiar el valor del parámetro C:

## Crea el clasificador SVM con un valor diferente de C
clf = SVC(kernel='linear', C=0.1)

## Entrena el clasificador con los datos de entrenamiento
clf.fit(X_train, y_train)

## Predecir las etiquetas del conjunto de prueba
y_pred = clf.predict(X_test)

## Calcular la precisión del modelo
accuracy = accuracy_score(y_test, y_pred)

## Imprimir la precisión del modelo
print("Precisión:", accuracy)

Resumen

En este laboratorio, exploramos el conjunto de datos de dígitos de scikit-learn y aprendimos cómo entrenar un modelo de aprendizaje automático para clasificar dígitos manuscritos. También aprendimos cómo evaluar el rendimiento del modelo y cómo mejorarlo ajustando los hiperparámetros del algoritmo. Este conjunto de datos es un gran recurso para cualquiera interesado en aprender sobre algoritmos de clasificación de aprendizaje automático.