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 ved at bruge fit()
-metoden.
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 den normale 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 parametrene nemt tilgås ved hjælp af 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)
Udarbejdelse af forudsigelser
Nye observationer kan nemt forudsiges ved hjælp af predict()
-metoden, men input 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)
Få oversigten
Som du sikkert har bemærket, er det ikke helt så enkelt at bruge OLS
-klassen som funktionen polyfit()
. Men brugen af OLS
har sine fordele. Under træningen beregnes der en række statistiske oplysninger. Disse oplysninger kan tilgås med metoden summary()
.
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 statistikker. 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
Can you explain what the `add_constant` function does?
What information can I find in the `summary()` output?
How do I interpret the values of `beta_0` and `beta_1`?
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 ved at bruge fit()
-metoden.
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 den normale 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 parametrene nemt tilgås ved hjælp af 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)
Udarbejdelse af forudsigelser
Nye observationer kan nemt forudsiges ved hjælp af predict()
-metoden, men input 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)
Få oversigten
Som du sikkert har bemærket, er det ikke helt så enkelt at bruge OLS
-klassen som funktionen polyfit()
. Men brugen af OLS
har sine fordele. Under træningen beregnes der en række statistiske oplysninger. Disse oplysninger kan tilgås med metoden summary()
.
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 statistikker. Vi vil gennemgå de vigtigste dele af tabellen i senere afsnit.
Tak for dine kommentarer!