3.2. Como entrenar un modelo de regresión lineal

 

Como entrenar un modelo de regresión lineal

La regresión lineal es un algoritmo de aprendizaje supervisado utilizado para predecir el valor de una variable dependiente basándose en una o más variables independientes. El objetivo es encontrar la relación lineal que mejor se ajuste a los datos observados. Es un método simple pero poderoso utilizado en diversos campos, desde la economía y la estadística hasta la ciencia de datos y el aprendizaje automático, debido a su facilidad de interpretación y aplicación.

Paso a paso como entrenar un modelo de regresión lineal

Paso 1: Preparación de datos

  • Recopilación de datos: Reúne un conjunto de datos que contenga las variables independientes (características) y la variable dependiente (etiqueta) que quieres predecir.
  • División de datos: Separa tus datos en conjuntos de entrenamiento y prueba. Por ejemplo, reserva el 70-80% de los datos para entrenamiento y el resto para probar el modelo después.

Paso 2: Importar bibliotecas y cargar datos

  • En Python, por ejemplo, puedes usar bibliotecas como numpy, pandas y scikit-learn para cargar y trabajar con los datos.

Paso 3: Preprocesamiento de datos

  • Limpieza de datos: Asegúrate de manejar los valores faltantes o atípicos en tus datos si los hay.
  • Selección de características: Elige las características relevantes para tu modelo.
  • Escalado de características (opcional): Normaliza o estandariza las características si es necesario para evitar problemas de escala.

Paso 4: Creación y entrenamiento del modelo

  • Importa el modelo de regresión lineal: En scikit-learn, puedes hacerlo utilizando LinearRegression desde sklearn.linear_model.
  • Separación de variables independientes y dependientes: Divide tus datos en variables independientes (X) y la variable dependiente (y).
  • Entrenamiento del modelo: Utiliza la función fit() para entrenar el modelo con tus datos de entrenamiento.

Paso 5: Evaluación del modelo

  • Predicciones: Utiliza el conjunto de prueba para hacer predicciones utilizando el método predict() del modelo.
  • Métricas de evaluación: Calcula métricas como el coeficiente de determinación (2), el error cuadrático medio (MSE) o el error absoluto medio (MAE) para evaluar el rendimiento del modelo.

Voy a crear un conjunto de datos ficticios sobre educación y rendimiento académico en la Universidad Autónoma Gabriel René Moreno (UAGRM) en Santa Cruz, Bolivia. Vamos a generar datos ficticios para las variables como horas de estudio, asistencia, calificaciones, etc.



import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_regression

# Generar datos ficticios
np.random.seed(42)

# Crear variables ficticias
num_samples = 1000

# Horas de estudio (variable independiente)
hours_studied = np.random.uniform(low=1, high=8, size=num_samples)

# Asistencia a clases (variable independiente)
attendance = np.random.randint(low=0, high=100, size=num_samples)

# Nivel socioeconómico (variable independiente)
economic_status = np.random.randint(low=1, high=5, size=num_samples)

# Generar relación ficticia entre las variables y el rendimiento académico (calificaciones)
# La relación ficticia se establecerá con una combinación lineal de las variables
# Esto solo es un ejemplo y no refleja relaciones reales entre estas variables
grades = 2 * hours_studied + 3 * attendance + 5 * economic_status + np.random.normal(scale=5, size=num_samples)

# Crear DataFrame con los datos
data = pd.DataFrame({
    'Hours_Studied': hours_studied,
    'Attendance': attendance,
    'Economic_Status': economic_status,
    'Grades': grades
})

# Visualización de los datos
plt.figure(figsize=(10, 6))

plt.subplot(2, 2, 1)
plt.scatter(data['Hours_Studied'], data['Grades'], alpha=0.5)
plt.xlabel('Hours Studied')
plt.ylabel('Grades')

plt.subplot(2, 2, 2)
plt.scatter(data['Attendance'], data['Grades'], alpha=0.5)
plt.xlabel('Attendance')
plt.ylabel('Grades')

plt.subplot(2, 2, 3)
plt.scatter(data['Economic_Status'], data['Grades'], alpha=0.5)
plt.xlabel('Economic Status')
plt.ylabel('Grades')

plt.tight_layout()
plt.show()

# Guardar los datos como CSV para su uso en Google Colab
data.to_csv('education_performance_uagrm.csv', index=False)


Este código genera un conjunto de datos ficticios con variables como horas de estudio, asistencia, nivel socioeconómico y calificaciones. Luego, crea gráficos de dispersión para visualizar la relación entre estas variables y las calificaciones. Por último, guarda estos datos como un archivo CSV llamado 'education_performance_uagrm.csv'.

Para ejecutarlo en Google Colab, puedes cargar el archivo CSV generado usando el siguiente código:

from google.colab import files

# Subir el archivo CSV a Google Colab
uploaded = files.upload()

# Cargar los datos desde el archivo CSV
import io
data = pd.read_csv(io.BytesIO(uploaded['education_performance_uagrm.csv']))

# Visualización de los datos (por ejemplo, gráfico de dispersión)
plt.scatter(data['Hours_Studied'], data['Grades'])
plt.xlabel('Hours Studied')
plt.ylabel('Grades')
plt.title('Relationship between Hours Studied and Grades')
plt.show()


https://colab.research.google.com/drive/1y7XQPywI0-xRKJNcRNkignfvCLG4dq5p?usp=sharing

Link del código en Google Colab

Comentarios

Entradas populares de este blog

5. Árboles de Decisión

4. Regresión Logística (Aprendizaje Supervisado)