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
-
numpyypandasse utilizan para manipular y procesar datos. -
LinearRegressiondesklearn.linear_modelse utiliza para crear y entrenar el modelo de regresión lineal. -
train_test_splitdesklearn.model_selectionse utiliza para dividir los datos en conjuntos de entrenamiento y prueba. -
mean_squared_erroryr2_score de sklearn.metricsse 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)
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}')
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)
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}")
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)
Comprueba lo aprendido
Responde 2–3 preguntas sobre esta lección. Verás ✓ en verde si aciertas o ✗ en rojo si fallas.