Kursinhalt
Lineare Regression mit Python
Lineare Regression mit Python
Erstellen Einer Linearen Regression mit Statsmodels
Im vorherigen Kapitel haben wir eine Funktion aus NumPy verwendet, um die Parameter zu berechnen.
Jetzt werden wir das Klassenobjekt anstelle der Funktion verwenden, um die lineare Regression darzustellen. Dieser Ansatz erfordert mehr Codezeilen, um die Parameter zu finden, speichert jedoch viele nützliche Informationen im Objekt und vereinfacht die Vorhersage.
Aufbau eines linearen Regressionsmodells
In statsmodels kann die OLS
-Klasse verwendet werden, um ein lineares Regressionsmodell zu erstellen.
Zuerst müssen wir ein OLS
-Klassenobjekt initialisieren mit
sm.OLS(y, X_tilde)
.
Dann trainieren wir es mit der Methode fit()
.
Was gleichbedeutend ist mit:
Hinweis
Der Konstruktor der
OLS
-Klasse erwartet ein spezifisches ArrayX_tilde
als Eingabe, das wir in der Normalengleichung gesehen haben. Daher müssen Sie IhrX
-Array inX_tilde
umwandeln. Dies ist mit der Funktionsm.add_constant()
erreichbar.
Parameter finden
Wenn das Modell trainiert ist, können Sie leicht auf die Parameter über das Attribut params
zugreifen.
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)
Vorhersagen treffen
Neue Instanzen können einfach mit der Methode predict()
vorhergesagt werden, aber Sie müssen die Eingaben dafür ebenfalls vorverarbeiten:
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)
Die Zusammenfassung erhalten
Wie Sie wahrscheinlich bemerkt haben, ist die Verwendung der OLS
-Klasse nicht so einfach wie die Funktion polyfit()
. Aber die Verwendung von OLS
hat ihre Vorteile. Während des Trainings berechnet es viele statistische Informationen. Sie können auf die Informationen mit der Methode summary()
zugreifen.
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())
Das sind viele Statistiken. Wir werden die wichtigsten Teile der Tabelle in späteren Abschnitten besprechen.
Danke für Ihr Feedback!