Kursinnhold
Lineær Regresjon med Python
Lineær Regresjon med Python
Bygge 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()
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
.
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)
Lage prediksjoner
Nye observasjoner kan enkelt predikeres ved å bruke predict()
-metoden, men du må også forhåndsprosessere inputen 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)
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.
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 mye statistikk. Vi vil diskutere de viktigste delene av tabellen i senere seksjoner.
Takk for tilbakemeldingene dine!