Contenu du cours
Régression Linéaire Avec Python
Régression Linéaire Avec Python
Construction de la Régression Linéaire avec Statsmodels
Dans le chapitre précédent, nous avons utilisé une fonction de NumPy pour calculer les paramètres.
Maintenant, nous allons utiliser l'objet de classe au lieu de la fonction pour représenter la régression linéaire. Cette approche nécessite plus de lignes de code pour trouver les paramètres, mais elle stocke beaucoup d'informations utiles à l'intérieur de l'objet et rend la prédiction plus simple.
Construire un modèle de régression linéaire
Dans statsmodels, la classe OLS
peut être utilisée pour créer un modèle de régression linéaire.
Nous devons d'abord initialiser un objet de classe OLS
en utilisant
sm.OLS(y, X_tilde)
.
Ensuite, entraînez-le en utilisant la méthode fit()
.
Ce qui équivaut à :
Remarque
Le constructeur de la classe
OLS
attend un tableau spécifiqueX_tilde
en entrée, que nous avons vu dans l'Équation Normale. Vous devez donc convertir votre tableauX
enX_tilde
. Cela est réalisable en utilisant la fonctionsm.add_constant()
.
Trouver les paramètres
Lorsque le modèle est entraîné, vous pouvez facilement accéder aux paramètres en utilisant l'attribut params
.
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)
Faire les prédictions
De nouvelles instances peuvent être facilement prédites en utilisant la méthode predict()
, mais vous devez également prétraiter l'entrée pour elles :
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)
Obtenir le résumé
Comme vous l'avez probablement remarqué, utiliser la classe OLS
n'est pas aussi simple que la fonction polyfit()
. Mais utiliser OLS
a ses avantages. Pendant l'entraînement, il calcule beaucoup d'informations statistiques. Vous pouvez accéder à ces informations en utilisant la méthode summary()
.
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())
Cela fait beaucoup de statistiques. Nous discuterons des parties les plus importantes du tableau dans les sections suivantes.
Merci pour vos commentaires !