Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Opbygning af Lineær Regression ved Hjælp af Statsmodels | Simpel Lineær Regression
Lineær Regression med Python

bookOpbygning 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()
Note
Bemærk

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.

12345678910111213141516
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)
copy

Udarbejdelse af forudsigelser

Nye observationer kan nemt forudsiges ved hjælp af predict()-metoden, men input skal også forbehandles for disse:

1234567891011121314151617
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)
copy

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().

123456789101112
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())
copy

Det er mange statistikker. Vi vil gennemgå de vigtigste dele af tabellen i senere afsnit.

question mark

Vælg den FORKERTE påstand.

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 4

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

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

bookOpbygning 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()
Note
Bemærk

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.

12345678910111213141516
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)
copy

Udarbejdelse af forudsigelser

Nye observationer kan nemt forudsiges ved hjælp af predict()-metoden, men input skal også forbehandles for disse:

1234567891011121314151617
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)
copy

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().

123456789101112
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())
copy

Det er mange statistikker. Vi vil gennemgå de vigtigste dele af tabellen i senere afsnit.

question mark

Vælg den FORKERTE påstand.

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 4
some-alt