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:

pip install scikit-learn

Importación

Para usar scikit-learn en tu código, primero debes importarlo:

import sklearn

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

  1. Cargar el conjunto de datos load_wine de scikit-learn.
  2. Dividir los datos en conjuntos de entrenamiento y prueba.
  3. Crear y entrenar un modelo de Árbol de Decisión.
  4. Evaluar el modelo utilizando la métrica de exactitud.

Ejercicio 2: Regresión con SVR

  1. Cargar el conjunto de datos load_diabetes de scikit-learn.
  2. Dividir los datos en conjuntos de entrenamiento y prueba.
  3. Crear y entrenar un modelo de Support Vector Regression (SVR).
  4. 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

Módulo 2: Estructuras de Control

Módulo 3: Funciones y Módulos

Módulo 4: Estructuras de Datos

Módulo 5: Programación Orientada a Objetos

Módulo 6: Manejo de Archivos

Módulo 7: Manejo de Errores y Excepciones

Módulo 8: Temas Avanzados

Módulo 9: Pruebas y Depuración

Módulo 10: Desarrollo Web con Python

Módulo 11: Ciencia de Datos con Python

Módulo 12: Proyecto Final

© Copyright 2024. Todos los derechos reservados