Introducción
En este módulo, exploraremos dos de los modelos más fundamentales en el análisis de datos: la regresión lineal y la regresión logística. Ambos modelos son esenciales para entender cómo las variables independientes pueden predecir una variable dependiente.
Objetivos del Módulo
- Comprender los conceptos básicos de la regresión lineal y logística.
- Aprender a implementar estos modelos utilizando herramientas de software comunes.
- Evaluar la efectividad de los modelos mediante métricas de desempeño.
Regresión Lineal
Conceptos Básicos
La regresión lineal es una técnica estadística utilizada para modelar la relación entre una variable dependiente continua y una o más variables independientes. La fórmula general de una regresión lineal simple es:
\[ y = \beta_0 + \beta_1 x + \epsilon \]
Donde:
- \( y \) es la variable dependiente.
- \( x \) es la variable independiente.
- \( \beta_0 \) es la intersección (constante).
- \( \beta_1 \) es el coeficiente de la variable independiente.
- \( \epsilon \) es el término de error.
Ejemplo Práctico
Supongamos que queremos predecir el precio de una casa en función de su tamaño en pies cuadrados.
Código en Python
import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression import matplotlib.pyplot as plt # Generar datos de ejemplo np.random.seed(0) tamaño = np.random.rand(100, 1) * 1000 # Tamaño en pies cuadrados precio = 30000 + 150 * tamaño + np.random.randn(100, 1) * 10000 # Precio en dólares # Convertir a DataFrame data = pd.DataFrame({'Tamaño': tamaño.flatten(), 'Precio': precio.flatten()}) # Dividir en conjuntos de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(data[['Tamaño']], data['Precio'], test_size=0.2, random_state=0) # Crear el modelo de regresión lineal modelo = LinearRegression() modelo.fit(X_train, y_train) # Predicciones y_pred = modelo.predict(X_test) # Visualización plt.scatter(X_test, y_test, color='blue', label='Datos Reales') plt.plot(X_test, y_pred, color='red', linewidth=2, label='Predicción') plt.xlabel('Tamaño (pies cuadrados)') plt.ylabel('Precio ($)') plt.legend() plt.show()
Explicación del Código
- Generación de Datos: Creamos un conjunto de datos sintéticos con una relación lineal entre el tamaño de la casa y su precio.
- División de Datos: Dividimos los datos en conjuntos de entrenamiento y prueba.
- Creación del Modelo: Utilizamos
LinearRegression
desklearn
para crear y entrenar el modelo. - Predicciones y Visualización: Realizamos predicciones y visualizamos los resultados.
Ejercicio Práctico
Ejercicio: Utiliza el conjunto de datos Boston Housing
de sklearn.datasets
para predecir el precio de las casas en función de todas las características disponibles.
Solución:
from sklearn.datasets import load_boston from sklearn.metrics import mean_squared_error # Cargar datos boston = load_boston() X = pd.DataFrame(boston.data, columns=boston.feature_names) y = pd.Series(boston.target) # Dividir 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=0) # Crear el modelo de regresión lineal modelo = LinearRegression() modelo.fit(X_train, y_train) # Predicciones y_pred = modelo.predict(X_test) # Evaluación del modelo mse = mean_squared_error(y_test, y_pred) print(f'Error Cuadrático Medio: {mse}')
Regresión Logística
Conceptos Básicos
La regresión logística se utiliza para modelar la probabilidad de un evento binario (sí/no, verdadero/falso). La fórmula general de una regresión logística es:
\[ P(y=1) = \frac{1}{1 + e^{-(\beta_0 + \beta_1 x)}} \]
Donde:
- \( P(y=1) \) es la probabilidad de que el evento ocurra.
- \( x \) es la variable independiente.
- \( \beta_0 \) y \( \beta_1 \) son los coeficientes del modelo.
Ejemplo Práctico
Supongamos que queremos predecir si un estudiante aprobará un examen en función de sus horas de estudio.
Código en Python
from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score # Generar datos de ejemplo np.random.seed(0) horas_estudio = np.random.rand(100, 1) * 10 # Horas de estudio aprobado = (horas_estudio + np.random.randn(100, 1) > 5).astype(int).flatten() # 1 si aprobado, 0 si no # Convertir a DataFrame data = pd.DataFrame({'Horas de Estudio': horas_estudio.flatten(), 'Aprobado': aprobado}) # Dividir en conjuntos de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(data[['Horas de Estudio']], data['Aprobado'], test_size=0.2, random_state=0) # Crear el modelo de regresión logística modelo = LogisticRegression() modelo.fit(X_train, y_train) # Predicciones y_pred = modelo.predict(X_test) # Evaluación del modelo accuracy = accuracy_score(y_test, y_pred) print(f'Precisión del Modelo: {accuracy}')
Explicación del Código
- Generación de Datos: Creamos un conjunto de datos sintéticos con una relación entre las horas de estudio y la probabilidad de aprobar.
- División de Datos: Dividimos los datos en conjuntos de entrenamiento y prueba.
- Creación del Modelo: Utilizamos
LogisticRegression
desklearn
para crear y entrenar el modelo. - Predicciones y Evaluación: Realizamos predicciones y evaluamos la precisión del modelo.
Ejercicio Práctico
Ejercicio: Utiliza el conjunto de datos Breast Cancer
de sklearn.datasets
para predecir si un tumor es maligno o benigno en función de todas las características disponibles.
Solución:
from sklearn.datasets import load_breast_cancer from sklearn.metrics import classification_report # Cargar datos cancer = load_breast_cancer() X = pd.DataFrame(cancer.data, columns=cancer.feature_names) y = pd.Series(cancer.target) # Dividir 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=0) # Crear el modelo de regresión logística modelo = LogisticRegression(max_iter=10000) modelo.fit(X_train, y_train) # Predicciones y_pred = modelo.predict(X_test) # Evaluación del modelo print(classification_report(y_test, y_pred))
Conclusión
En este módulo, hemos cubierto los conceptos básicos y la implementación de la regresión lineal y logística. Estos modelos son fundamentales para el análisis de datos y proporcionan una base sólida para técnicas más avanzadas. En el próximo módulo, exploraremos otros modelos de datos como los árboles de decisión y los bosques aleatorios.
Curso de Análisis de Datos
Módulo 1: Introducción al Análisis de Datos
- Conceptos Básicos de Análisis de Datos
- Importancia del Análisis de Datos en la Toma de Decisiones
- Herramientas y Software Comúnmente Utilizados
Módulo 2: Recolección y Preparación de Datos
- Fuentes de Datos y Métodos de Recolección
- Limpieza de Datos: Identificación y Manejo de Datos Faltantes
- Transformación y Normalización de Datos
Módulo 3: Exploración de Datos
- Análisis Exploratorio de Datos (EDA)
- Visualización de Datos: Gráficos y Tablas
- Detección de Patrones y Tendencias
Módulo 4: Modelado de Datos
- Introducción a los Modelos Estadísticos
- Regresión Lineal y Logística
- Árboles de Decisión y Bosques Aleatorios
Módulo 5: Evaluación y Validación de Modelos
- Métricas de Evaluación de Modelos
- Validación Cruzada y Técnicas de Validación
- Ajuste y Optimización de Modelos
Módulo 6: Implementación y Comunicación de Resultados
- Implementación de Modelos en Producción
- Comunicación de Resultados a Partes Interesadas
- Documentación y Reportes