Kursinhalt
Lineare Regression mit Python
Lineare Regression mit Python
Erstellen Einer Multiplen Linearen Regression
Die OLS
-Klasse ermöglicht es Ihnen, Multiple Lineare Regression auf die gleiche Weise wie Einfache Lineare Regression zu erstellen. Leider kann die Funktion np.polyfit()
den Fall mit mehreren Merkmalen nicht verarbeiten.
Wir werden bei der OLS
-Klasse bleiben.
Aufbau der X̃-Matrix
Wir haben dasselbe Datenset aus dem Beispiel der einfachen linearen Regression, aber es enthält jetzt die Körpergröße der Mutter als zweites Merkmal. Laden wir es und schauen uns die X
-Variable an.
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())
Denken Sie daran, dass wir OLS(y, X_tilde)
verwenden sollten, um das OLS
-Objekt zu initialisieren. Wie Sie sehen können, enthält die X-Variable bereits zwei Merkmale in separaten Spalten. Um das X_tilde zu erhalten, müssen wir nur 1en als erste Spalte hinzufügen. Die Funktion sm.add_constant(X)
macht genau das!
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())
Finden der Parameter
Großartig! Jetzt können wir das Modell erstellen, die Parameter finden und Vorhersagen auf die gleiche Weise treffen, wie wir es im vorherigen Abschnitt getan haben.
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)
Hinweis
Da unser Trainingssatz jetzt 2 Merkmale hat, müssen wir 2 Merkmale für jede neue Instanz bereitstellen, die wir vorhersagen möchten. Deshalb wurde
np.array([[65, 62],[70, 65],[75, 70]])
im obigen Beispiel verwendet. Es sagty
für 3 neue Instanzen voraus: [Vater:65,Mutter:62], [Vater:70, Mutter:65], [Vater:75, Mutter:70]
Danke für Ihr Feedback!