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
.
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)
At foretage forudsigelser
Nye observationer kan nemt forudsiges ved hjælp af predict()
-metoden, men inputtet skal også forbehandles for disse:
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)
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.
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())
Det er mange statistiske oplysninger. Vi vil gennemgå de vigtigste dele af tabellen i senere afsnit.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 5.26
Opbygning af Lineær Regression ved Hjælp af Statsmodels
Stryg for at vise menuen
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
.
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)
At foretage forudsigelser
Nye observationer kan nemt forudsiges ved hjælp af predict()
-metoden, men inputtet skal også forbehandles for disse:
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)
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.
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())
Det er mange statistiske oplysninger. Vi vil gennemgå de vigtigste dele af tabellen i senere afsnit.
Tak for dine kommentarer!