Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Bygge Lineær Regresjon Ved Bruk Av Statsmodels | Enkel Lineær Regresjon
Lineær Regresjon med Python

bookBygge Lineær Regresjon Ved Bruk Av Statsmodels

I forrige kapittel brukte vi en funksjon fra NumPy for å beregne parameterne.
Nå skal vi bruke et klasseobjekt i stedet for funksjonen for å representere lineær regresjon. Denne tilnærmingen krever flere kodelinjer for å finne parameterne, men lagrer mye nyttig informasjon i objektet og gjør prediksjonen mer oversiktlig.

Bygging av en lineær regresjonsmodell

I statsmodels kan OLS-klassen brukes til å opprette en lineær regresjonsmodell.

Vi må først initialisere et OLS-klasseobjekt ved å bruke sm.OLS(y, X_tilde). Deretter trenes det ved å bruke fit()-metoden.

model = sm.OLS(y, X_tilde)
model = model.fit()

Som er ekvivalent med:

model = sm.OLS(y, X_tilde).fit()
Note
Merk

Konstruktøren til OLS-klassen forventer et spesifikt array X_tilde som input, slik vi så i Normal Equation. Derfor må du konvertere ditt X-array til X_tilde. Dette kan gjøres ved å bruke funksjonen sm.add_constant().

Finne parametere

Når modellen er trent, kan du enkelt få tilgang til parameterne ved å bruke attributtet 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

Lage prediksjoner

Nye observasjoner kan enkelt predikeres ved å bruke predict()-metoden, men du må også forhåndsprosessere inputen 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

Hente sammendraget

Som du sikkert har lagt merke til, er det ikke like enkelt å bruke OLS-klassen som funksjonen polyfit(). Men det å bruke OLS har sine fordeler. Under treningen beregner den mye statistisk informasjon. Du kan få tilgang til denne informasjonen ved å bruke summary()-metoden.

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 mye statistikk. Vi vil diskutere de viktigste delene av tabellen i senere seksjoner.

question mark

Velg det FEILAKTIGE utsagnet.

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 4

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 5.26

bookBygge Lineær Regresjon Ved Bruk Av Statsmodels

Sveip for å vise menyen

I forrige kapittel brukte vi en funksjon fra NumPy for å beregne parameterne.
Nå skal vi bruke et klasseobjekt i stedet for funksjonen for å representere lineær regresjon. Denne tilnærmingen krever flere kodelinjer for å finne parameterne, men lagrer mye nyttig informasjon i objektet og gjør prediksjonen mer oversiktlig.

Bygging av en lineær regresjonsmodell

I statsmodels kan OLS-klassen brukes til å opprette en lineær regresjonsmodell.

Vi må først initialisere et OLS-klasseobjekt ved å bruke sm.OLS(y, X_tilde). Deretter trenes det ved å bruke fit()-metoden.

model = sm.OLS(y, X_tilde)
model = model.fit()

Som er ekvivalent med:

model = sm.OLS(y, X_tilde).fit()
Note
Merk

Konstruktøren til OLS-klassen forventer et spesifikt array X_tilde som input, slik vi så i Normal Equation. Derfor må du konvertere ditt X-array til X_tilde. Dette kan gjøres ved å bruke funksjonen sm.add_constant().

Finne parametere

Når modellen er trent, kan du enkelt få tilgang til parameterne ved å bruke attributtet 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

Lage prediksjoner

Nye observasjoner kan enkelt predikeres ved å bruke predict()-metoden, men du må også forhåndsprosessere inputen 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

Hente sammendraget

Som du sikkert har lagt merke til, er det ikke like enkelt å bruke OLS-klassen som funksjonen polyfit(). Men det å bruke OLS har sine fordeler. Under treningen beregner den mye statistisk informasjon. Du kan få tilgang til denne informasjonen ved å bruke summary()-metoden.

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 mye statistikk. Vi vil diskutere de viktigste delene av tabellen i senere seksjoner.

question mark

Velg det FEILAKTIGE utsagnet.

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 4
some-alt