Regresión múltiple en Python

En Python , podemos realizar una regresión múltiple utilizando bibliotecas como numpy , pandas y scikit-learn . La regresión múltiple es una técnica estadística que se utiliza para predecir una variable dependiente (objetivo) en función de dos o más variables independientes (predictores).


Importar las bibliotecas necesarias

Lo primero que debes hacer es importar las bibliotecas que necesitarás para realizar la regresión múltiple. Utilizaremos numpy, pandas , y sklearn .

Ejemplo

    # Importar las bibliotecas necesarias
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
  
  • numpy y pandas se utilizan para manipular y procesar datos.
  • LinearRegression de sklearn.linear_model se utiliza para crear y entrenar el modelo de regresión lineal.
  • train_test_split de sklearn.model_selection se utiliza para dividir los datos en conjuntos de entrenamiento y prueba.
  • mean_squared_error y r2_score de sklearn.metrics se utilizan para evaluar el rendimiento del modelo.

Crear un DataFrame con los datos

A continuación, creamos un DataFrame de Pandas con nuestros datos. Puedes utilizar tus propios datos o los datos proporcionados en el ejemplo. Asegúrate de que las columnas tengan la misma longitud.

Ejemplo

    df = pd.DataFrame(data)
print(df)
f = pd.DataFrame(data)
print(df)
ddf = pd.DataFrame(data)
print(df)
  

Se puede dar el caso, que tengamos los datos en un archivo, por ejemplo en un .csv o en algún otro formato, en ese caso tendríamos que hacer referencia a ese archivo. Los datos del dataframe deberían tener este aspecto en una tabla:

Presupuesto (EUR) Clics Conversiones
5000 12000 450
3500 8000 320
6000 15000 580
4500 10000 390
5500 11000 420
4200 9200 350
6800 16000 620
3200 7500 290
4900 10500 400
3800 8200 315
6100 14500 560
4300 9500 365
4700 11000 420
6900 15700 605
3300 7600 295
5000 10800 410
3600 8200 315
5200 12600 480
4400 8400 375
5600 14400 430
6100 9000 565
4100 7500 345
3400 9000 290
5000 7500 435
4800 11300 410
6700 10700 590
3500 15200 310
5300 8000 445
5100 11600 475
3700 12400 320
5900 8400 550

Seleccionar las características y la variable objetivo

Define las características ( variables independientes ) y la variable objetivo ( variable dependiente ) que deseas utilizar en la regresión. En nuestro ejemplo, utilizamos "Presupuesto (EUR)" y "Clics" como características, y "Conversiones" como la variable objetivo.

Ejemplo

    df = pd.DataFrame(data)
print(df)
# Sef = pd.DataFrame(data)
print(df)
# Seleccionar columnas del DataFrame
X = df[['Presupuesto (EUR)', 'Clics']]
y = df['Conversiones']
print(y)
ddf = pd.DataFrame(data)
print(df)
# Seleccionar
# Seleccionar columnas del DataFrame
X = df[['Presupuesto (EUR)', 'Clics']]
y = df['Conversiones']
print(y)
print(y)
  

Codificar variables categóricas

Si tienes variables categóricas en tus datos, debes codificarlas antes de usarlas en el modelo. En nuestro ejemplo, no tenemos variables categóricas.


Dividir los datos en conjuntos de entrenamiento y prueba

Es importante dividir los datos en conjuntos de entrenamiento y prueba para evaluar el rendimiento del modelo. Utilizamos train_test_split para hacer esto.

Ejemplo

    # Dividir el conjunto de datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
print(conjunto2)
  

Crear y entrenar el modelo de regresión

Creamos una instancia del modelo de regresión lineal y lo ajustamos a los datos de entrenamiento.

Ejemplo

    # Importar la biblioteca scikit-learn
from sklearn.linear_model import LinearRegression

# Crear un modelo de regresión lineal
model = LinearRegression()

# Entrenar el modelo con los datos de entrenamiento
model.fit(X_train, y_train
  

Evaluar el modelo

Evaluamos el rendimiento del modelo utilizando métricas como el error cuadrático medio (MSE) y el coeficiente de determinación (R2).

Ejemplo

    y_pred = model.predict(X_test)
# Calcula
# Calcular el Mean Squared Error (MSE) y R-squared (R2)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
# Imprimir
# Imprimir los resultados
print(f"Mean Squared Error (MSE): {mse:.2f}")
print(f"R-squared (R2): {r2:.2f}")
  

Hacer Predicciones

Finalmente, podemos usar el modelo entrenado para hacer predicciones en nuevos datos. Reemplaza X_new con los nuevos valores que deseas predecir.

Ejemplo

    print(f"R-squared (R2): {r2:.2f}")
  

Ejemplo completo de la regresión múltiple en Python

Puedes calcular métricas como el error cuadrático medio (MSE) o el coeficiente de determinación (R2) para evaluar el modelo en función de tus necesidades específicas.

Ejemplo

    import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, mean_squared_error
from sklearn.model_selection import train_test_split

# Crear un DataFrame con los datos
data = {
    'Presupuesto (EUR)': [5000, 3500, 6000, 4500, 5500, 4200, 6800, 3200, 4900, 3800, 6100, 4300, 4700, 6900, 3300, 5000, 3600, 5200, 4400, 5600, 6100, 4100, 3400, 5000, 4800, 6700, 3500, 5300, 5100, 3700, 5900],
    'Clics': [12000, 8000, 15000, 10000, 11000, 9200, 16000, 7500, 10500, 8200, 14500, 9500, 11000, 15700, 7600, 10800, 8200, 12600, 8400, 14400, 9000, 7500, 9000, 7500, 11300, 10700, 15200, 8000, 11600, 12400, 8400],
    'Conversiones': [450, 320, 580, 390, 420, 350, 620, 290, 400, 315, 560, 365, 420, 605, 295, 410, 315, 480, 375, 430, 565, 345, 290, 435, 410, 590, 310, 445, 475, 320, 550]
}

df = pd.DataFrame(data)

# Seleccionar características y variable objetivo
X = df[['Presupuesto (EUR)', 'Clics']]
y = df['Conversiones']

# 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 y entrenar el modelo de regresión
model = LinearRegression()
model.fit(X_train, y_train)

# Hacer predicciones en el conjunto de prueba
y_pred = model.predict(X_test)

# Calcular el coeficiente de determinación (R2)
r2 = r2_score(y_test, y_pred)

# Calcular el error cuadrático medio (MSE)
mse = mean_squared_error(y_test, y_pred)

# Imprimir resultados
print(f'Coeficiente de Determinación (R2): {r2:.2f}')
print(f'Error Cuadrático Medio (MSE): {mse:.2f}')

# Hacer una predicción para nuevos datos
nuevo_dato = np.array([[4000, 9000]])  # Aquí puedes ingresar el presupuesto y clics para hacer una predicción
prediccion = model.predict(nuevo_dato)
print(f'La predicción de Conversiones es: {prediccion[0]:.2f}')
  

Resultado:

Ejemplo

    df = pd.DataFrame(data)
print(df)
f = pd.DataFrame(data)
print(df)
ddf = pd.DataFrame(data)
print(df)
  • Coeficiente de Determinación (R2) : Este valor mide la proporción de la variabilidad en la variable dependiente (conversiones) que es explicada por el modelo. R2 varía entre 0 y 1, donde 1 indica que el modelo explica toda la variabilidad y 0 indica que el modelo no explica ninguna. Cuanto más cercano a 1, mejor. Si R2 es alto (por ejemplo, 0.80), significa que el modelo es capaz de predecir bastante bien las conversiones en función del presupuesto y los clics.
  • Error Cuadrático Medio (MSE) : El MSE es una medida de cuán cerca están las predicciones del modelo de los valores reales de la variable dependiente. Cuanto menor sea el MSE, mejor será el modelo en términos de precisión de las predicciones. El MSE es una medida de "ajuste" del modelo a los datos. Valores bajos de MSE indican un buen ajuste.

Interpretación de la regresión múltiple en Python

para interpretar los resultados, debes prestar atención a R2 y MSE. Un alto R2 y un bajo MSE son indicativos de un buen modelo de regresión múltiple que puede predecir eficazmente las conversiones en función del presupuesto y los clics. Sin embargo, es importante recordar que estos valores deben evaluarse en el contexto de los datos y el problema específico que estás abordando.

  • Coeficiente de Determinación (R2) : Si el R2 es cercano a 1, significa que el modelo explica bien la variabilidad en las conversiones en función del presupuesto y los clics. En este caso, el modelo puede usarse para hacer predicciones fiables. Si es bajo, podría ser necesario considerar otras variables o métodos para mejorar la predicción.
  • Error Cuadrático Medio (MSE) : Un MSE bajo indica que las predicciones del modelo son cercanas a los valores reales de las conversiones. Por ejemplo, si el MSE es 100, esto significa que, en promedio, las predicciones del modelo están a 10 unidades de distancia de los valores reales en términos de conversiones. Cuanto más bajo sea el MSE, mejor será la calidad de las predicciones.

¡Eso es todo! Ahora tienes un modelo de regresión múltiple que puede predecir las conversiones en función del presupuesto, los clics y la plataforma de marketing. Puedes utilizar este modelo para hacer predicciones en nuevos datos de marketing.

Este es solo un ejemplo básico de cómo realizar una regresión múltiple en Python. Puedes personalizar y ajustar el modelo según tus necesidades específicas.

Practica Regresión múltiple en Python en el editor

Pon en práctica lo aprendido con nuestro editor Python interactivo. Cada ejercicio incluye el código de partida y un botón para abrirlo en una nueva pestaña, donde puedes modificarlo y ejecutarlo.

Ejercicio: Regresión múltiple

A continuación, creamos un DataFrame de Pandas con nuestros datos. Puedes utilizar tus propios datos o los datos proporcionados en el ejemplo. Asegúrate de que las columnas tengan.

Ejemplo

    df = pd.DataFrame(data)
print(df)
f = pd.DataFrame(data)
print(df)
ddf = pd.DataFrame(data)
print(df)
  
Abrir en editor

Ejercicio: Define las características (

Define las características ( variables independientes ) y la variable objetivo ( variable dependiente ) que deseas utilizar en.

Ejemplo

    import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, mean_squared_error
from sklearn.model_selection import train_test_split

# Crear un DataFrame con los datos
data = {
    'Presupuesto (EUR)': [5000, 3500, 6000, 4500, 5500, 4200, 6800, 3200, 4900, 3800, 6100, 4300, 4700, 6900, 3300, 5000, 3600, 5200, 4400, 5600, 6100, 4100, 3400, 5000, 4800, 6700, 3500, 5300, 5100, 3700, 5900],
    'Clics': [12000, 8000, 15000, 10000, 11000, 9200, 16000, 7500, 10500, 8200, 14500, 9500, 11000, 15700, 7600, 10800, 8200, 12600, 8400, 14400, 9000, 7500, 9000, 7500, 11300, 10700, 15200, 8000, 11600, 12400, 8400],
    'Conversiones': [450, 320, 580, 390, 420, 350, 620, 290, 400, 315, 560, 365, 420, 605, 295, 410, 315, 480, 375, 430, 565, 345, 290, 435, 410, 590, 310, 445, 475, 320, 550]
}

df = pd.DataFrame(data)

# Seleccionar características y variable objetivo
X = df[['Presupuesto (EUR)', 'Clics']]
y = df['Conversiones']

# 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 y entrenar el modelo de regresión
model = LinearRegression()
model.fit(X_train, y_train)

# Hacer predicciones en el conjunto de prueba
y_pred = model.predict(X_test)

# Calcular el coeficiente de determinación (R2)
r2 = r2_score(y_test, y_pred)

# Calcular el error cuadrático medio (MSE)
mse = mean_squared_error(y_test, y_pred)

# Imprimir resultados
print(f'Coeficiente de Determinación (R2): {r2:.2f}')
print(f'Error Cuadrático Medio (MSE): {mse:.2f}')

# Hacer una predicción para nuevos datos
nuevo_dato = np.array([[4000, 9000]])  # Aquí puedes ingresar el presupuesto y clics para hacer una predicción
prediccion = model.predict(nuevo_dato)
print(f'La predicción de Conversiones es: {prediccion[0]:.2f}')
  
Abrir en editor

Ejercicio: Dividir el conjunto de datos en entrenamiento y prueba

Es importante dividir los datos en conjuntos de entrenamiento y prueba para evaluar el rendimiento del modelo. Utilizamos train_test_split para hacer esto.

Ejemplo

    # Dividir el conjunto de datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
print(conjunto2)
  
Abrir en editor

Ejercicio: Calcula

Evaluamos el rendimiento del modelo utilizando métricas como el error cuadrático medio (MSE) y el coeficiente de determinación (R2).

Ejemplo

    y_pred = model.predict(X_test)
# Calcula
# Calcular el Mean Squared Error (MSE) y R-squared (R2)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
# Imprimir
# Imprimir los resultados
print(f"Mean Squared Error (MSE): {mse:.2f}")
print(f"R-squared (R2): {r2:.2f}")
  
Abrir en editor

Ejercicio: Sef = pd.dataframe(data)

Finalmente, podemos usar el modelo entrenado para hacer predicciones en nuevos datos. Reemplaza X_new con los nuevos valores que deseas predecir.

Ejemplo

    df = pd.DataFrame(data)
print(df)
# Sef = pd.DataFrame(data)
print(df)
# Seleccionar columnas del DataFrame
X = df[['Presupuesto (EUR)', 'Clics']]
y = df['Conversiones']
print(y)
ddf = pd.DataFrame(data)
print(df)
# Seleccionar
# Seleccionar columnas del DataFrame
X = df[['Presupuesto (EUR)', 'Clics']]
y = df['Conversiones']
print(y)
  
Abrir en editor

Comprueba lo aprendido

Responde 2–3 preguntas sobre esta lección. Verás ✓ en verde si aciertas o ✗ en rojo si fallas.