Construcción de Regresión Lineal Múltiple
La clase OLS
permite construir una Regresión Lineal Múltiple de la misma manera que una Regresión Lineal Simple. Sin embargo, la función np.polyfit()
no admite el caso de múltiples características.
Utilizaremos la clase OLS
.
Construcción de la matriz X̃
Contamos con el mismo conjunto de datos del ejemplo de regresión lineal simple, pero ahora incluye la altura de la madre como segunda característica. Lo cargaremos y observaremos su variable X
:
import pandas as pd import statsmodels.api as sm file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file # Assign the variables X = df[['Father', 'Mother']] y = df['Height'] print(X.head())
Recuerde que se debe utilizar OLS(y, X_tilde)
para inicializar el objeto OLS
. Como puede observar, la variable X ya contiene dos características en columnas separadas. Por lo tanto, para obtener X_tilde, solo es necesario añadir unos como primera columna. ¡La función sm.add_constant(X)
realiza exactamente esa operación!
import pandas as pd import statsmodels.api as sm file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file # Assign the variables X = df[['Father', 'Mother']] y = df['Height'] # Create X_tilde X_tilde = sm.add_constant(X) print(X_tilde.head())
Encontrar los Parámetros
¡Excelente! Ahora podemos construir el modelo, encontrar los parámetros y hacer predicciones de la misma manera que hicimos en la sección anterior.
import pandas as pd import statsmodels.api as sm import numpy as np file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file X,y = df[['Father', 'Mother']], df['Height'] # Assign the variables X_tilde = sm.add_constant(X) # Create X_tilde # Initialize an OLS object regression_model = sm.OLS(y, X_tilde) # Train the object regression_model = regression_model.fit() # Get the paramters beta_0, beta_1, beta_2 = regression_model.params print('beta_0 is: ', beta_0) print('beta_1 is: ', beta_1) print('beta_2 is: ', beta_2) # Predict new values X_new = np.array([[65, 62],[70, 65],[75, 70]]) # Feature values of new instances X_new_tilde = sm.add_constant(X_new) # Preprocess X_new y_pred = regression_model.predict(X_new_tilde) # Predict the target print('Predictions:', y_pred)
Ahora que nuestro conjunto de entrenamiento tiene 2 características, es necesario proporcionar 2 características para cada nueva instancia que se desee predecir. Por eso se utilizó np.array([[65, 62],[70, 65],[75, 70]])
en el ejemplo anterior. Predice y
para 3 nuevas instancias: [Father:65,Mother:62]
, [Father:70, Mother:65]
, [Father:75, Mother:70]
.
¡Gracias por tus comentarios!