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.
Nous allons maintenant utiliser un 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 de nombreuses informations utiles dans l'objet et rend la prédiction plus directe.
Construction d'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, l'entraîner à l'aide de la méthode fit()
.
model = sm.OLS(y, X_tilde)
model = model.fit()
Ce qui est équivalent à :
model = sm.OLS(y, X_tilde).fit()
Le constructeur de la classe OLS
attend un tableau spécifique X_tilde
en entrée, comme vu dans l’Équation Normale. Il est donc nécessaire de convertir votre tableau X
en X_tilde
. Cela peut être réalisé à l’aide de la fonction sm.add_constant()
.
Recherche des paramètres
Une fois le modèle entraîné, il est possible d’accéder facilement aux paramètres à l’aide de l’attribut 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)
Réalisation des prédictions
De nouvelles instances peuvent être facilement prédites à l'aide de la méthode predict()
, mais il est également nécessaire de prétraiter les entrées correspondantes :
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)
Obtention du résumé
Comme vous l'avez probablement remarqué, l'utilisation de la classe OLS
n'est pas aussi simple que la fonction polyfit()
. Cependant, l'utilisation de OLS
présente des avantages. Lors de l'entraînement, de nombreuses informations statistiques sont calculées. Vous pouvez accéder à ces informations à l'aide de la méthode 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())
Cela fait beaucoup de statistiques. Nous aborderons les parties les plus importantes du tableau dans les sections suivantes.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 5.26
Construction de la Régression Linéaire avec Statsmodels
Glissez pour afficher le menu
Dans le chapitre précédent, nous avons utilisé une fonction de NumPy pour calculer les paramètres.
Nous allons maintenant utiliser un 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 de nombreuses informations utiles dans l'objet et rend la prédiction plus directe.
Construction d'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, l'entraîner à l'aide de la méthode fit()
.
model = sm.OLS(y, X_tilde)
model = model.fit()
Ce qui est équivalent à :
model = sm.OLS(y, X_tilde).fit()
Le constructeur de la classe OLS
attend un tableau spécifique X_tilde
en entrée, comme vu dans l’Équation Normale. Il est donc nécessaire de convertir votre tableau X
en X_tilde
. Cela peut être réalisé à l’aide de la fonction sm.add_constant()
.
Recherche des paramètres
Une fois le modèle entraîné, il est possible d’accéder facilement aux paramètres à l’aide de l’attribut 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)
Réalisation des prédictions
De nouvelles instances peuvent être facilement prédites à l'aide de la méthode predict()
, mais il est également nécessaire de prétraiter les entrées correspondantes :
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)
Obtention du résumé
Comme vous l'avez probablement remarqué, l'utilisation de la classe OLS
n'est pas aussi simple que la fonction polyfit()
. Cependant, l'utilisation de OLS
présente des avantages. Lors de l'entraînement, de nombreuses informations statistiques sont calculées. Vous pouvez accéder à ces informations à l'aide de la méthode 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())
Cela fait beaucoup de statistiques. Nous aborderons les parties les plus importantes du tableau dans les sections suivantes.
Merci pour vos commentaires !