Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Construcción de Regresión Lineal Utilizando Statsmodels | Regresión Lineal Simple
Regresión Lineal con Python

bookConstrucción de Regresión Lineal Utilizando Statsmodels

En el capítulo anterior, utilizamos una función de NumPy para calcular los parámetros.
Ahora utilizaremos el objeto de clase en lugar de la función para representar la regresión lineal. Este enfoque requiere más líneas de código para encontrar los parámetros, pero almacena mucha información útil dentro del objeto y facilita la predicción.

Construcción de un modelo de regresión lineal

En statsmodels, la clase OLS puede utilizarse para crear un modelo de regresión lineal.

Primero necesitamos inicializar un objeto de la clase OLS usando sm.OLS(y, X_tilde). Luego entrenarlo utilizando el método fit().

model = sm.OLS(y, X_tilde)
model = model.fit()

Lo cual es equivalente a:

model = sm.OLS(y, X_tilde).fit()
Note
Nota

El constructor de la clase OLS espera un arreglo específico X_tilde como entrada, que vimos en la Ecuación Normal. Por lo tanto, es necesario convertir tu arreglo X a X_tilde. Esto se puede lograr utilizando la función sm.add_constant().

Búsqueda de parámetros

Cuando el modelo está entrenado, puedes acceder fácilmente a los parámetros utilizando el atributo params.

12345678910111213141516
import statsmodels.api as sm # import statsmodels import pandas as pd file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Open the file X, y = df['Father'], df['Height'] # Assign the variables # Get the correct form of input for OLS X_tilde = sm.add_constant(X) # 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 = regression_model.params print('beta_0 is: ', beta_0) print('beta_1 is: ', beta_1)
copy

Realización de predicciones

Las nuevas instancias pueden predecirse fácilmente utilizando el método predict(), pero también es necesario preprocesar la entrada para ellas:

1234567891011121314151617
import statsmodels.api as sm import pandas as pd import numpy as np file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Open the file X, y = df['Father'], df['Height'] # Assign the variables X_tilde = sm.add_constant(X) # Preprocess regression_model = sm.OLS(y, X_tilde) # Initialize an OLS object regression_model = regression_model.fit() # Train the object # Predict new values X_new = np.array([65,70,75]) # 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(y_pred)
copy

Obtención del resumen

Como probablemente hayas notado, utilizar la clase OLS no es tan sencillo como la función polyfit(). Sin embargo, usar OLS tiene sus ventajas. Durante el entrenamiento, calcula mucha información estadística. Puedes acceder a esta información utilizando el método summary().

123456789101112
import statsmodels.api as sm import pandas as pd file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file X, y = df['Father'], df['Height'] X_tilde = sm.add_constant(X) # Preprocess X regression_model = sm.OLS(y, X_tilde) # Initialize an OLS object regression_model = regression_model.fit() # Train the object # Print the summary print(regression_model.summary())
copy

Eso es mucha estadística. Analizaremos las partes más importantes de la tabla en secciones posteriores.

question mark

Elige la afirmación INCORRECTA.

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 4

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 5.26

bookConstrucción de Regresión Lineal Utilizando Statsmodels

Desliza para mostrar el menú

En el capítulo anterior, utilizamos una función de NumPy para calcular los parámetros.
Ahora utilizaremos el objeto de clase en lugar de la función para representar la regresión lineal. Este enfoque requiere más líneas de código para encontrar los parámetros, pero almacena mucha información útil dentro del objeto y facilita la predicción.

Construcción de un modelo de regresión lineal

En statsmodels, la clase OLS puede utilizarse para crear un modelo de regresión lineal.

Primero necesitamos inicializar un objeto de la clase OLS usando sm.OLS(y, X_tilde). Luego entrenarlo utilizando el método fit().

model = sm.OLS(y, X_tilde)
model = model.fit()

Lo cual es equivalente a:

model = sm.OLS(y, X_tilde).fit()
Note
Nota

El constructor de la clase OLS espera un arreglo específico X_tilde como entrada, que vimos en la Ecuación Normal. Por lo tanto, es necesario convertir tu arreglo X a X_tilde. Esto se puede lograr utilizando la función sm.add_constant().

Búsqueda de parámetros

Cuando el modelo está entrenado, puedes acceder fácilmente a los parámetros utilizando el atributo params.

12345678910111213141516
import statsmodels.api as sm # import statsmodels import pandas as pd file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Open the file X, y = df['Father'], df['Height'] # Assign the variables # Get the correct form of input for OLS X_tilde = sm.add_constant(X) # 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 = regression_model.params print('beta_0 is: ', beta_0) print('beta_1 is: ', beta_1)
copy

Realización de predicciones

Las nuevas instancias pueden predecirse fácilmente utilizando el método predict(), pero también es necesario preprocesar la entrada para ellas:

1234567891011121314151617
import statsmodels.api as sm import pandas as pd import numpy as np file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Open the file X, y = df['Father'], df['Height'] # Assign the variables X_tilde = sm.add_constant(X) # Preprocess regression_model = sm.OLS(y, X_tilde) # Initialize an OLS object regression_model = regression_model.fit() # Train the object # Predict new values X_new = np.array([65,70,75]) # 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(y_pred)
copy

Obtención del resumen

Como probablemente hayas notado, utilizar la clase OLS no es tan sencillo como la función polyfit(). Sin embargo, usar OLS tiene sus ventajas. Durante el entrenamiento, calcula mucha información estadística. Puedes acceder a esta información utilizando el método summary().

123456789101112
import statsmodels.api as sm import pandas as pd file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file X, y = df['Father'], df['Height'] X_tilde = sm.add_constant(X) # Preprocess X regression_model = sm.OLS(y, X_tilde) # Initialize an OLS object regression_model = regression_model.fit() # Train the object # Print the summary print(regression_model.summary())
copy

Eso es mucha estadística. Analizaremos las partes más importantes de la tabla en secciones posteriores.

question mark

Elige la afirmación INCORRECTA.

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 4
some-alt