Contenu du cours
Régression Linéaire Avec Python
Régression Linéaire Avec Python
Construction de la Régression Linéaire Multiple
La classe OLS
vous permet de construire une régression linéaire multiple de la même manière qu'une régression linéaire simple. Mais malheureusement, la fonction np.polyfit()
ne gère pas le cas des multiples caractéristiques.
Nous allons nous en tenir à la classe OLS
.
Construction de la matrice X̃
Nous avons le même jeu de données que dans l'exemple de régression linéaire simple, mais il inclut maintenant la taille de la mère comme deuxième caractéristique. Chargeons-le et examinons sa 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())
Rappelez-vous, nous devons utiliser OLS(y, X_tilde)
pour initialiser l'objet OLS
. Comme vous pouvez le voir, la variable X contient déjà deux caractéristiques dans des colonnes séparées. Donc, pour obtenir X_tilde, nous devons simplement ajouter des 1s comme première colonne. La fonction sm.add_constant(X)
fait exactement cela !
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())
Trouver les paramètres
Super ! Maintenant, nous pouvons construire le modèle, trouver les paramètres et faire des prédictions de la même manière que nous l'avons fait dans la section précédente.
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)
Remarque
Maintenant que notre ensemble d'entraînement a 2 caractéristiques, nous devons fournir 2 caractéristiques pour chaque nouvelle instance que nous voulons prédire. C'est pourquoi
np.array([[65, 62],[70, 65],[75, 70]])
a été utilisé dans l'exemple ci-dessus. Il prédity
pour 3 nouvelles instances : [Father:65,Mother:62], [Father:70, Mother:65], [Father:75, Mother:70]
Merci pour vos commentaires !