Kursinhalt
Lineare Regression mit Python
Lineare Regression mit Python
Erstellung Einer Multiplen Linearen Regression
Die OLS
-Klasse ermöglicht es, Multiple Lineare Regression auf die gleiche Weise wie die Einfache Lineare Regression zu erstellen. Leider kann die Funktion np.polyfit()
jedoch nicht mit mehreren Merkmalen umgehen.
Wir bleiben bei der OLS
-Klasse.
Aufbau der X̃-Matrix
Wir verwenden denselben Datensatz wie im Beispiel zur einfachen linearen Regression, aber nun ist die Körpergröße der Mutter als zweites Merkmal enthalten. Wir laden ihn und betrachten die 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())
Beachten Sie, dass zur Initialisierung des OLS(y, X_tilde)
-Objekts OLS
verwendet werden sollte. Wie ersichtlich, enthält die Variable X bereits zwei Merkmale in separaten Spalten. Um X_tilde zu erhalten, müssen lediglich Einsen als erste Spalte hinzugefügt werden. Die Funktion sm.add_constant(X)
übernimmt genau diese Aufgabe!
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())
Bestimmung der Parameter
Ausgezeichnet! Nun können wir das Modell erstellen, die Parameter bestimmen und Vorhersagen auf die gleiche Weise treffen wie im vorherigen Abschnitt.
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)
Da unser Trainingsdatensatz jetzt 2 Merkmale enthält, müssen wir für jede neue Instanz, die wir vorhersagen möchten, 2 Merkmale angeben. Deshalb wurde im obigen Beispiel np.array([[65, 62],[70, 65],[75, 70]])
verwendet. Es sagt y
für 3 neue Instanzen voraus: [Father:65,Mother:62]
, [Father:70, Mother:65]
, [Father:75, Mother:70]
.
Danke für Ihr Feedback!