Regresión Logística con Python y Scikit Learn
Clase 2 de 17 • Curso de Regresión Logística con Python y scikit-learn
Resumen
¿Cómo se configura el entorno y se cargan los datos en un modelo de regresión logística?
La regresión logística es una técnica poderosa y versátil en el campo del Machine Learning, especialmente para la clasificación de datos. El uso de Python y Scikit Learn facilita su implementación, permitiéndonos abordar tareas complejas con relativa sencillez. Comenzaremos discutiendo cómo configurar el entorno y cargar eficientemente los datos necesarios.
¿Qué librerías se necesitan?
Para este proyecto, necesitamos varias librerías que nos ayudarán en distintos aspectos del proceso:
- Scikit Learn: Esencial para manipular datasets y aplicar regresión logística.
- Pandas: Para la manipulación y análisis de datos estructurados.
- Matplotlib y Seaborn: Para la visualización de datos.
- NumPy: Utilizado para efectuar operaciones sobre matrices y arrays.
Estas librerías, ya precargadas en el entorno, nos permiten trabajar sin complicaciones. El dataset específico que usaremos son imágenes de dígitos escritos a mano, disponibles mediante LogDigit
desde Scikit Learn.dataset
.
¿Cómo cargamos los datos?
Iniciamos cargando los datos en un objeto llamado Digits
:
from sklearn.datasets import load_digits
digits = load_digits()
El objeto Digits
contiene varias propiedades relevantes, incluyendo los datos (data
), los nombres de las columnas o características (feature_names
), y una variable Target
, que indica qué dígito está representado en cada imagen.
¿Cómo se visualizan los datos?
Para ver de forma más clara estas imágenes de dígitos, hacemos uso de NumPy para reestructurarlas en un formato de 8x8, que es la estructura documentada en el dataset original.
import numpy as np
image = np.reshape(digits.data[0], (8, 8))
Podemos visualizar la imagen utilizando Matplotlib
:
import matplotlib.pyplot as plt
plt.imshow(image, cmap='gray')
plt.show()
Esta visualización nos permite entender mejor los datos que estamos manipulando, ofreciendo una base firme para el aprendizaje del modelo.
¿Cómo dividir los datos en entrenamiento y prueba?
Dividir adecuadamente nuestros datos entre conjuntos de entrenamiento y prueba es crucial para validar y evaluar el desempeño de nuestro modelo. Esta responsabilidad no solo sustenta los resultados obtenidos, sino que asegura la fiabilidad del algoritmo ante datos no vistos previamente.
¿Por qué es importante esta división?
La separación de los datos en entrenamiento y prueba permite:
- Asegurar que nuestro modelo no está "aprendiendo de memoria" el dataset completo.
- Validar el modelo con datos que no ha visto antes, permitiéndonos evaluar su precisión de forma objetiva.
¿Cómo hacemos el split de datos?
La función train_test_split
de Scikit Learn se utiliza para dividir los datos:
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.2, random_state=0)
Aquí, test_size=0.2
indica que el 20% del dataset se utilizará para pruebas. El random_state
asegura que la división sea reproducible en futuras ejecuciones.
¿Cómo se entrena y evalúa un modelo de regresión logística?
Una vez que los datos están listos y divididos, el siguiente paso es entrenar el modelo de regresión logística. Aquí, se destacará cómo configurar un modelo, entrenarlo, predecir resultados, y finalmente, evaluar su rendimiento.
¿Cómo configurar y entrenar el modelo?
La configuración y entrenamiento del modelo son extremadamente sencillos:
from sklearn.linear_model import LogisticRegression
logistic_reg = LogisticRegression(max_iter=200)
logistic_reg.fit(x_train, y_train)
La función fit
entrena el modelo utilizando el conjunto de entrenamiento.
¿Cómo se realizan predicciones?
Con el modelo entrenado, podemos obtener predicciones en el conjunto de prueba:
predictions = logistic_reg.predict(x_test)
Estas predicciones nos permitirán evaluar el desempeño del modelo comparándolas con los valores reales de y_test
.
¿Cómo evaluamos el modelo?
Para evaluar la efectividad del modelo, utilizamos una matriz de confusión:
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, predictions)
Y para visualizarlo:
import seaborn as sns
plt.figure(figsize=(9, 9))
sns.heatmap(cm, annot=True, linewidths=0.5, square=True, cmap='coolwarm')
plt.ylabel('Actual label')
plt.xlabel('Predicted label')
plt.show()
Esta matriz permite identificar mayormente los aciertos y errores del modelo; los valores en la diagonal indican el número de predicciones correctas.
Explorar la regresión logística utilizando Python y Scikit Learn es un excelente punto de partida para adentrarse en el mundo del machine learning. La simplicidad del código y la precisión en la clasificación demuestran la efectividad de esta técnica. Invito a seguir indagando y practicando con modelos más complejos, siguiendo este curso o explorando otros datasets y algoritmos. ¡El aprendizaje nunca termina!