Erstellung Einer Linearen Regression Mit Statsmodels
Im vorherigen Kapitel haben wir eine Funktion aus NumPy verwendet, um die Parameter zu berechnen.
Nun werden wir anstelle der Funktion das Klassenobjekt verwenden, um die lineare Regression darzustellen. Dieser Ansatz erfordert mehr Codezeilen zur Bestimmung der Parameter, speichert jedoch viele hilfreiche Informationen im Objekt und vereinfacht die Vorhersage.
Aufbau eines linearen Regressionsmodells
In statsmodels kann die Klasse OLS
verwendet werden, um ein lineares Regressionsmodell zu erstellen.
Zunächst muss ein Objekt der Klasse OLS
initialisiert werden mit
sm.OLS(y, X_tilde)
.
Anschließend wird es mit der Methode fit()
trainiert.
model = sm.OLS(y, X_tilde)
model = model.fit()
Dies entspricht:
model = sm.OLS(y, X_tilde).fit()
Der Konstruktor der OLS
-Klasse erwartet ein bestimmtes Array X_tilde
als Eingabe, das wir in der Normalengleichung gesehen haben. Daher muss das X
-Array in X_tilde
umgewandelt werden. Dies ist mit der Funktion sm.add_constant()
möglich.
Parameterermittlung
Nach dem Training des Modells können die Parameter einfach über das Attribut params
abgerufen werden.
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)
Vorhersagen erstellen
Neue Instanzen können einfach mit der Methode predict()
vorhergesagt werden, jedoch müssen auch diese Eingabedaten vorverarbeitet werden:
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)
Zusammenfassung abrufen
Wie Sie wahrscheinlich bemerkt haben, ist die Verwendung der OLS
-Klasse nicht so einfach wie die Funktion polyfit()
. Die Nutzung von OLS
bietet jedoch Vorteile. Während des Trainings werden zahlreiche statistische Informationen berechnet. Auf diese Informationen kann mit der Methode summary()
zugegriffen werden.
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())
Das sind viele statistische Kennzahlen. Die wichtigsten Teile der Tabelle werden wir in späteren Abschnitten besprechen.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 5.26
Erstellung Einer Linearen Regression Mit Statsmodels
Swipe um das Menü anzuzeigen
Im vorherigen Kapitel haben wir eine Funktion aus NumPy verwendet, um die Parameter zu berechnen.
Nun werden wir anstelle der Funktion das Klassenobjekt verwenden, um die lineare Regression darzustellen. Dieser Ansatz erfordert mehr Codezeilen zur Bestimmung der Parameter, speichert jedoch viele hilfreiche Informationen im Objekt und vereinfacht die Vorhersage.
Aufbau eines linearen Regressionsmodells
In statsmodels kann die Klasse OLS
verwendet werden, um ein lineares Regressionsmodell zu erstellen.
Zunächst muss ein Objekt der Klasse OLS
initialisiert werden mit
sm.OLS(y, X_tilde)
.
Anschließend wird es mit der Methode fit()
trainiert.
model = sm.OLS(y, X_tilde)
model = model.fit()
Dies entspricht:
model = sm.OLS(y, X_tilde).fit()
Der Konstruktor der OLS
-Klasse erwartet ein bestimmtes Array X_tilde
als Eingabe, das wir in der Normalengleichung gesehen haben. Daher muss das X
-Array in X_tilde
umgewandelt werden. Dies ist mit der Funktion sm.add_constant()
möglich.
Parameterermittlung
Nach dem Training des Modells können die Parameter einfach über das Attribut params
abgerufen werden.
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)
Vorhersagen erstellen
Neue Instanzen können einfach mit der Methode predict()
vorhergesagt werden, jedoch müssen auch diese Eingabedaten vorverarbeitet werden:
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)
Zusammenfassung abrufen
Wie Sie wahrscheinlich bemerkt haben, ist die Verwendung der OLS
-Klasse nicht so einfach wie die Funktion polyfit()
. Die Nutzung von OLS
bietet jedoch Vorteile. Während des Trainings werden zahlreiche statistische Informationen berechnet. Auf diese Informationen kann mit der Methode summary()
zugegriffen werden.
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())
Das sind viele statistische Kennzahlen. Die wichtigsten Teile der Tabelle werden wir in späteren Abschnitten besprechen.
Danke für Ihr Feedback!