domingo, 14 de enero de 2024

Aplicación practica de regresión lineal (Aprendizaje supervisado)

 

La regresión lineal es una técnica del aprendizaje supervisado que se utiliza para predecir valores numéricos a través de la relación lineal entre variables. 

Para crear una aplicación práctica de regresión lineal, primero se necesita tener un conjunto de datos con variables independientes (X) y la variable dependiente (Y) que se quiere predecir. Los detalles específicos pueden variar dependiendo del lenguaje de programación y la biblioteca que se esté utilizando. A partir de ahí, se puede seguir los siguientes pasos:

Paso 1: Importar las bibliotecas necesarias

Comenzar por importar las bibliotecas necesarias para el cálculo de regresión lineal, como NumPy y scikit-learn en Python. Estas bibliotecas proporcionan funciones y herramientas para facilitar la implementación del algoritmo.

Paso 2: Preparar los datos

Recopilar los datos en conjuntos de variables independientes X y la variable dependiente Y que se desea predecir. Asegurarse de que los datos estén en un formato adecuado para ser utilizados en el algoritmo de regresión lineal. Por ejemplo, se podría necesitar convertir variables categóricas en variables numéricas.

Paso 3: Dividir los datos

Dividir los datos en conjuntos de entrenamiento y prueba. El conjunto de datos de entrenamiento se utilizará para ajustar el modelo de regresión lineal, mientras que el conjunto de prueba se utilizará para evaluar el rendimiento del modelo. Una división común es utilizar alrededor del 70-80% de los datos para entrenamiento y el resto para pruebas.

Paso 4: Crear una instancia del modelo de regresión lineal

Crear una instancia del modelo de regresión lineal utilizando la biblioteca correspondiente. Esto permitirá utilizar las funciones y métodos proporcionados por la biblioteca para entrenar y hacer predicciones con el modelo.

Paso 5: Entrenar el modelo

Utilizar el conjunto de datos de entrenamiento para ajustar los coeficientes del modelo de regresión lineal. Estos coeficientes representan la línea (o hyperplano en dimensiones superiores) que mejor se ajusta a los datos. El objetivo es minimizar el error entre las predicciones del modelo y los valores reales.

Paso 6: Evaluar el modelo

Utilizar el conjunto de datos de prueba para evaluar el rendimiento del modelo entrenado. Calcular métricas de evaluación, como el error cuadrático medio (MSE) o el coeficiente de determinación (R2), para medir qué tan bien se ajusta el modelo a los datos de prueba. Cuanto más cercano a cero sea el MSE o más cercano a uno sea el R2, mejor se ajustará el modelo.

Paso 7: Hacer predicciones

Una vez que el modelo haya sido entrenado y evaluado, se puede utilizarlo para hacer predicciones en nuevos datos. Ingresar los valores de las variables independientes para los cuales se desea hacer una predicción y utilizar el modelo para predecir el valor de la variable dependiente correspondiente.

Ejemplo 1: Aplicación práctica de regresión lineal con datos ficticios, utilizando Python y la biblioteca scikit-learn: 

En este ejemplo, creamos una regresión lineal utilizando datos ficticios. Las variables independientes X son números del 1 al 5, y la variable dependiente y es el doble de cada número. Luego, creamos una instancia del modelo de regresión lineal y lo entrenamos utilizando los datos. Posteriormente, hacemos predicciones para nuevos valores X_new, que en este caso son 6, 7 y 8. Por último, imprimimos las predicciones correspondientes.


# Paso 1: Importar las bibliotecas necesarias
import numpy as np
from sklearn.linear_model import LinearRegression

# Paso 2: Definir los datos ficticios
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1) # Variables independientes
y = np.array([2, 4, 6, 8, 10]) # Variable dependiente

# Paso 3: Crear una instancia del modelo de regresión lineal
regression_model = LinearRegression()

# Paso 4: Entrenar el modelo utilizando los datos
regression_model.fit(X, y)

# Paso 5: Hacer predicciones utilizando el modelo entrenado
X_new = np.array([6, 7, 8]).reshape(-1, 1) # Nuevas variables independientes
predictions = regression_model.predict(X_new)

# Paso 6: Imprimir las predicciones
for i, prediction in enumerate(predictions):
    print("Predicción para X = {}: {}".format(X_new[i][0], prediction))

Predicción para X = 6: 12.0

Predicción para X = 7: 14.0

Predicción para X = 8: 16.0


Ejemplo 2: crear gráficas de regresión lineal con los datos ficticios utilizados anteriormente en Python:

En este código, utilizamos la biblioteca Matplotlib para graficar los datos reales, la línea de regresión y las predicciones. Primero, creamos una gráfica de dispersión (scatter plot) con los datos reales. Luego, trazamos la línea de regresión utilizando la función plot() y los valores de predicción utilizando la función scatter(). Finalmente, agregamos etiquetas a los ejes y una leyenda para identificar las diferentes series de datos.

Al ejecutar este código, se obtiene una gráfica que muestra los datos reales en puntos azules, la línea de regresión en rojo y las predicciones en puntos verdes.


import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# Definir los datos ficticios
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1) # Variables independientes
y = np.array([2, 4, 6, 8, 10]) # Variable dependiente

# Crear una instancia del modelo de regresión lineal
regression_model = LinearRegression()

# Entrenar el modelo
regression_model.fit(X, y)

# Hacer predicciones
X_new = np.array([6, 7, 8]).reshape(-1, 1) # Nuevas variables independientes
predictions = regression_model.predict(X_new)

# Graficar los datos y la línea de regresión
plt.scatter(X, y, color='blue', label='Datos reales')
plt.plot(X, regression_model.predict(X), color='red', label='Regresión lineal')
plt.scatter(X_new, predictions, color='green', label='Predicciones')
plt.xlabel('Variables independientes')
plt.ylabel('Variable dependiente')
plt.legend()
plt.show()




Ejemplo 3: ejemplo de regresión lineal con datos ficticios que incluye la conversión de variables categóricas a variables numéricas:

En este ejemplo, los datos incluyen una variable categórica llamada "Género" que se codifica como 0 para "Hombre" y 1 para "Mujer". Usamos la función LabelEncoder de scikit-learn para convertir las categorías en valores numéricos.

Luego, separamos las variables independientes Edad y Género en X y la variable dependiente Salario en y. Después de crear una instancia del modelo de regresión lineal, entrenamos el modelo con los datos.

Finalmente, hacemos predicciones para nuevos valores de edad y género, convertimos el género a valores numéricos usando el LabelEncoder y representamos los resultados en un gráfico que muestra los datos reales en azul, la línea de regresión en rojo y las predicciones en verde.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import LabelEncoder

# Definir los datos ficticios
data = {
    'Edad': [25, 30, 35, 20, 45, 50, 55, 40, 60, 65],
    'Género': ['Hombre', 'Mujer', 'Mujer', 'Hombre', 'Hombre', 'Mujer', 'Hombre', 'Mujer', 'Hombre', 'Mujer'],
    'Salario': [500, 1000, 1500, 300, 2000, 2500, 3500, 3000, 4000, 5000]
}

df = pd.DataFrame(data)

# Conversión de variables categóricas a numéricas
le = LabelEncoder()
df['Género'] = le.fit_transform(df['Género'])

# Separar variables independientes y dependiente
X = df.drop('Salario', axis=1)
y = df['Salario']

# Crear una instancia del modelo de regresión lineal
regression_model = LinearRegression()

# Entrenar el modelo
regression_model.fit(X, y)

# Hacer predicciones
X_new = pd.DataFrame({'Edad': [28, 32], 'Género': ['Hombre', 'Mujer']})
X_new['Género'] = le.transform(X_new['Género'])
predictions = regression_model.predict(X_new)

# Graficar los datos y la línea de regresión
plt.scatter(df['Edad'], df['Salario'], color='blue', label='Datos reales')
plt.plot(df['Edad'], regression_model.predict(df.drop('Salario', axis=1)), color='red', label='Regresión lineal')
plt.scatter(X_new['Edad'], predictions, color='green', label='Predicciones')
plt.xlabel('Edad')
plt.ylabel('Salario')
plt.legend()
plt.show()







No hay comentarios:

Publicar un comentario

Aplicación Práctica: Regresión Logística (Aprendizaje Supervisado)

  Definicion.-   La regresión logística es un método estadístico utilizado para modelar la probabilidad de que una variable dependiente bina...