Construindo Regressão Linear Usando Statsmodels
No capítulo anterior, utilizamos uma função do NumPy para calcular os parâmetros.
Agora, usaremos o objeto de classe em vez da função para representar a regressão linear. Essa abordagem exige mais linhas de código para encontrar os parâmetros, mas armazena muitas informações úteis dentro do objeto e torna a previsão mais direta.
Construção de um Modelo de Regressão Linear
No statsmodels, a classe OLS
pode ser utilizada para criar um modelo de regressão linear.
Primeiro, é necessário inicializar um objeto da classe OLS
usando
sm.OLS(y, X_tilde)
.
Em seguida, treine-o utilizando o método fit()
.
model = sm.OLS(y, X_tilde)
model = model.fit()
O que é equivalente a:
model = sm.OLS(y, X_tilde).fit()
O construtor da classe OLS
espera um array específico X_tilde
como entrada, conforme visto na Equação Normal. Portanto, é necessário converter seu array X
para X_tilde
. Isso pode ser feito utilizando a função sm.add_constant()
.
Encontrando Parâmetros
Quando o modelo é treinado, é possível acessar facilmente os parâmetros utilizando o atributo params
.
12345678910111213141516import 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)
Realizando as Previsões
Novas instâncias podem ser facilmente previstas utilizando o método predict()
, mas é necessário também pré-processar a entrada para elas:
1234567891011121314151617import 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)
Obtendo o Sumário
Como você provavelmente percebeu, utilizar a classe OLS
não é tão simples quanto a função polyfit()
. Porém, usar OLS
possui seus benefícios. Durante o treinamento, ela calcula diversas informações estatísticas. Você pode acessar essas informações utilizando o método summary()
.
123456789101112import 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())
São muitas estatísticas. Discutiremos as partes mais importantes da tabela nas próximas seções.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 5.26
Construindo Regressão Linear Usando Statsmodels
Deslize para mostrar o menu
No capítulo anterior, utilizamos uma função do NumPy para calcular os parâmetros.
Agora, usaremos o objeto de classe em vez da função para representar a regressão linear. Essa abordagem exige mais linhas de código para encontrar os parâmetros, mas armazena muitas informações úteis dentro do objeto e torna a previsão mais direta.
Construção de um Modelo de Regressão Linear
No statsmodels, a classe OLS
pode ser utilizada para criar um modelo de regressão linear.
Primeiro, é necessário inicializar um objeto da classe OLS
usando
sm.OLS(y, X_tilde)
.
Em seguida, treine-o utilizando o método fit()
.
model = sm.OLS(y, X_tilde)
model = model.fit()
O que é equivalente a:
model = sm.OLS(y, X_tilde).fit()
O construtor da classe OLS
espera um array específico X_tilde
como entrada, conforme visto na Equação Normal. Portanto, é necessário converter seu array X
para X_tilde
. Isso pode ser feito utilizando a função sm.add_constant()
.
Encontrando Parâmetros
Quando o modelo é treinado, é possível acessar facilmente os parâmetros utilizando o atributo params
.
12345678910111213141516import 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)
Realizando as Previsões
Novas instâncias podem ser facilmente previstas utilizando o método predict()
, mas é necessário também pré-processar a entrada para elas:
1234567891011121314151617import 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)
Obtendo o Sumário
Como você provavelmente percebeu, utilizar a classe OLS
não é tão simples quanto a função polyfit()
. Porém, usar OLS
possui seus benefícios. Durante o treinamento, ela calcula diversas informações estatísticas. Você pode acessar essas informações utilizando o método summary()
.
123456789101112import 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())
São muitas estatísticas. Discutiremos as partes mais importantes da tabela nas próximas seções.
Obrigado pelo seu feedback!