Objetivos del Módulo
En este módulo, aprenderás los conceptos básicos del aprendizaje automático (Machine Learning) y cómo implementarlos utilizando la biblioteca scikit-learn en Python. Al finalizar este módulo, deberías ser capaz de:
- Comprender los conceptos fundamentales del aprendizaje automático.
- Conocer los tipos de aprendizaje automático: supervisado y no supervisado.
- Implementar modelos básicos de aprendizaje automático utilizando scikit-learn.
- Evaluar el rendimiento de los modelos.
Contenidos
Conceptos Fundamentales del Aprendizaje Automático
El aprendizaje automático es una rama de la inteligencia artificial que se enfoca en el desarrollo de algoritmos que permiten a las computadoras aprender a partir de datos y hacer predicciones o decisiones sin ser explícitamente programadas para ello.
Conceptos Clave
- Modelo: Una representación matemática de un proceso basado en datos.
- Entrenamiento: El proceso de ajustar un modelo a los datos.
- Predicción: El uso de un modelo entrenado para hacer inferencias sobre nuevos datos.
- Características (Features): Las variables de entrada utilizadas para hacer predicciones.
- Etiquetas (Labels): Las variables de salida que el modelo intenta predecir.
Tipos de Aprendizaje Automático
Aprendizaje Supervisado
En el aprendizaje supervisado, el modelo se entrena utilizando un conjunto de datos etiquetados, es decir, datos que incluyen tanto las características como las etiquetas.
- Clasificación: Predicción de una etiqueta categórica.
- Regresión: Predicción de un valor continuo.
Aprendizaje No Supervisado
En el aprendizaje no supervisado, el modelo se entrena utilizando un conjunto de datos sin etiquetas. El objetivo es encontrar patrones o estructuras en los datos.
- Agrupamiento (Clustering): Agrupación de datos en clusters basados en similitudes.
- Reducción de Dimensionalidad: Reducción del número de características manteniendo la mayor cantidad de información posible.
Introducción a scikit-learn
scikit-learn es una biblioteca de Python para el aprendizaje automático que proporciona herramientas simples y eficientes para el análisis de datos y la minería de datos.
Instalación
Para instalar scikit-learn, puedes usar pip:
Importación
Para usar scikit-learn en tu código, primero debes importarlo:
Implementación de Modelos Supervisados
Ejemplo de Clasificación: Clasificador de Vecinos Más Cercanos (KNN)
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score # Cargar el conjunto de datos Iris iris = load_iris() X = iris.data y = iris.target # Dividir los datos en conjuntos de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Crear el modelo KNN knn = KNeighborsClassifier(n_neighbors=3) # Entrenar el modelo knn.fit(X_train, y_train) # Hacer predicciones y_pred = knn.predict(X_test) # Evaluar el modelo accuracy = accuracy_score(y_test, y_pred) print(f'Accuracy: {accuracy}')
Ejemplo de Regresión: Regresión Lineal
from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error # Cargar el conjunto de datos Boston Housing boston = load_boston() X = boston.data y = boston.target # Dividir los datos en conjuntos de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Crear el modelo de regresión lineal lr = LinearRegression() # Entrenar el modelo lr.fit(X_train, y_train) # Hacer predicciones y_pred = lr.predict(X_test) # Evaluar el modelo mse = mean_squared_error(y_test, y_pred) print(f'Mean Squared Error: {mse}')
Implementación de Modelos No Supervisados
Ejemplo de Agrupamiento: K-Means
from sklearn.datasets import load_iris from sklearn.cluster import KMeans import matplotlib.pyplot as plt # Cargar el conjunto de datos Iris iris = load_iris() X = iris.data # Crear el modelo K-Means kmeans = KMeans(n_clusters=3, random_state=42) # Ajustar el modelo kmeans.fit(X) # Obtener las etiquetas de los clusters labels = kmeans.labels_ # Visualizar los clusters plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis') plt.xlabel('Feature 1') plt.ylabel('Feature 2') plt.title('K-Means Clustering') plt.show()
Evaluación de Modelos
Métricas de Evaluación
- Exactitud (Accuracy): Proporción de predicciones correctas.
- Precisión (Precision): Proporción de verdaderos positivos entre los positivos predichos.
- Recuperación (Recall): Proporción de verdaderos positivos entre los positivos reales.
- F1-Score: Media armónica de precisión y recuperación.
Ejemplo de Evaluación
from sklearn.metrics import classification_report # Evaluar el modelo KNN report = classification_report(y_test, y_pred) print(report)
Ejercicios Prácticos
Ejercicio 1: Clasificación con Árboles de Decisión
- Cargar el conjunto de datos
load_wine
de scikit-learn. - Dividir los datos en conjuntos de entrenamiento y prueba.
- Crear y entrenar un modelo de Árbol de Decisión.
- Evaluar el modelo utilizando la métrica de exactitud.
Ejercicio 2: Regresión con SVR
- Cargar el conjunto de datos
load_diabetes
de scikit-learn. - Dividir los datos en conjuntos de entrenamiento y prueba.
- Crear y entrenar un modelo de Support Vector Regression (SVR).
- Evaluar el modelo utilizando la métrica de error cuadrático medio.
Soluciones
Solución Ejercicio 1
from sklearn.datasets import load_wine from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score # Cargar el conjunto de datos Wine wine = load_wine() X = wine.data y = wine.target # Dividir los datos en conjuntos de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Crear el modelo de Árbol de Decisión dt = DecisionTreeClassifier() # Entrenar el modelo dt.fit(X_train, y_train) # Hacer predicciones y_pred = dt.predict(X_test) # Evaluar el modelo accuracy = accuracy_score(y_test, y_pred) print(f'Accuracy: {accuracy}')
Solución Ejercicio 2
from sklearn.datasets import load_diabetes from sklearn.model_selection import train_test_split from sklearn.svm import SVR from sklearn.metrics import mean_squared_error # Cargar el conjunto de datos Diabetes diabetes = load_diabetes() X = diabetes.data y = diabetes.target # Dividir los datos en conjuntos de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Crear el modelo SVR svr = SVR() # Entrenar el modelo svr.fit(X_train, y_train) # Hacer predicciones y_pred = svr.predict(X_test) # Evaluar el modelo mse = mean_squared_error(y_test, y_pred) print(f'Mean Squared Error: {mse}')
Conclusión
En este módulo, hemos cubierto los conceptos básicos del aprendizaje automático y cómo implementarlos utilizando la biblioteca scikit-learn. Hemos aprendido a trabajar con modelos supervisados y no supervisados, y cómo evaluar su rendimiento. Con estos conocimientos, estás preparado para explorar más a fondo el aprendizaje automático y aplicar estos conceptos a problemas del mundo real.
Curso de Programación en Python
Módulo 1: Introducción a Python
- Introducción a Python
- Configuración del Entorno de Desarrollo
- Sintaxis de Python y Tipos de Datos Básicos
- Variables y Constantes
- Entrada y Salida Básica
Módulo 2: Estructuras de Control
- Sentencias Condicionales
- Bucles: for y while
- Herramientas de Control de Flujo
- Comprensiones de Listas
Módulo 3: Funciones y Módulos
- Definición de Funciones
- Argumentos de Función
- Funciones Lambda
- Módulos y Paquetes
- Visión General de la Biblioteca Estándar
Módulo 4: Estructuras de Datos
Módulo 5: Programación Orientada a Objetos
Módulo 6: Manejo de Archivos
- Lectura y Escritura de Archivos
- Trabajo con Archivos CSV
- Manejo de Datos JSON
- Operaciones de Archivos y Directorios
Módulo 7: Manejo de Errores y Excepciones
- Introducción a las Excepciones
- Manejo de Excepciones
- Lanzamiento de Excepciones
- Excepciones Personalizadas
Módulo 8: Temas Avanzados
- Decoradores
- Generadores
- Administradores de Contexto
- Concurrencia: Hilos y Procesos
- Asyncio para Programación Asíncrona
Módulo 9: Pruebas y Depuración
- Introducción a las Pruebas
- Pruebas Unitarias con unittest
- Desarrollo Guiado por Pruebas
- Técnicas de Depuración
- Uso de pdb para Depuración
Módulo 10: Desarrollo Web con Python
- Introducción al Desarrollo Web
- Fundamentos del Framework Flask
- Construcción de APIs REST con Flask
- Introducción a Django
- Construcción de Aplicaciones Web con Django
Módulo 11: Ciencia de Datos con Python
- Introducción a la Ciencia de Datos
- NumPy para Computación Numérica
- Pandas para Manipulación de Datos
- Matplotlib para Visualización de Datos
- Introducción al Aprendizaje Automático con scikit-learn