Kursusindhold
Lineær Regression med Python
Lineær Regression med Python
Opbygning af Lineær Regression ved Hjælp af Statsmodels
I det foregående kapitel brugte vi en funktion fra NumPy til at beregne parametrene.
Nu vil vi bruge klasseobjektet i stedet for funktionen til at repræsentere lineær regression. Denne tilgang kræver flere linjer kode for at finde parametrene, men den gemmer en masse nyttig information i objektet og gør forudsigelsen mere ligetil.
Opbygning af en lineær regressionsmodel
I statsmodels kan OLS
-klassen bruges til at oprette en lineær regressionsmodel.
Vi skal først initialisere et OLS
-klasseobjekt ved hjælp af
sm.OLS(y, X_tilde)
.
Derefter trænes det med metoden fit()
.
model = sm.OLS(y, X_tilde)
model = model.fit()
Hvilket svarer til:
model = sm.OLS(y, X_tilde).fit()
Konstruktøren for OLS
-klassen forventer et specifikt array X_tilde
som input, hvilket vi så i Normal Ligning. Derfor skal du konvertere dit X
-array til X_tilde
. Dette kan opnås ved at bruge funktionen sm.add_constant()
.
Parametre
Når modellen er trænet, kan du nemt tilgå parametrene ved at bruge attributten params
.
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)
At foretage forudsigelser
Nye observationer kan nemt forudsiges ved hjælp af predict()
-metoden, men inputtet skal også forbehandles for disse:
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)
Hentning af oversigt
Som du sikkert har bemærket, er brugen af OLS
-klassen ikke lige så enkel som funktionen polyfit()
. Men brugen af OLS
har sine fordele. Under træningen beregnes der mange statistiske oplysninger. Du kan få adgang til disse oplysninger ved hjælp af summary()
-metoden.
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())
Det er mange statistiske oplysninger. Vi vil gennemgå de vigtigste dele af tabellen i senere afsnit.
Tak for dine kommentarer!