Kurssisisältö
Lineaarinen Regressio Pythonilla
Lineaarinen Regressio Pythonilla
Monimuuttujaisen Lineaarisen Regressiomallin Rakentaminen
OLS
-luokka mahdollistaa moninkertaisen lineaarisen regressiomallin rakentamisen samalla tavalla kuin yksinkertaisen lineaarisen regressiomallin. Valitettavasti np.polyfit()
-funktio ei kuitenkaan tue usean muuttujan tapausta.
Käytämme siis OLS
-luokkaa.
X̃-matriisin rakentaminen
Meillä on sama aineisto kuin yksinkertaisen lineaarisen regressiomallin esimerkissä, mutta nyt mukana on äidin pituus toisena muuttujana. Lataamme aineiston ja tarkastelemme sen X
-muuttujaa:
import pandas as pd import statsmodels.api as sm file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file # Assign the variables X = df[['Father', 'Mother']] y = df['Height'] print(X.head())
Muista, että meidän tulisi käyttää OLS(y, X_tilde)
alustamaan OLS
-objekti. Kuten huomaat, X-muuttuja sisältää jo kaksi ominaisuutta erillisissä sarakkeissa. Jotta saadaan X_tilde, tarvitsee vain lisätä 1:t ensimmäiseksi sarakkeeksi. Funktio sm.add_constant(X)
tekee juuri tämän!
import pandas as pd import statsmodels.api as sm file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file # Assign the variables X = df[['Father', 'Mother']] y = df['Height'] # Create X_tilde X_tilde = sm.add_constant(X) print(X_tilde.head())
Parametrien löytäminen
Hienoa! Nyt voimme rakentaa mallin, löytää parametrit ja tehdä ennusteita samalla tavalla kuin edellisessä osiossa.
import pandas as pd import statsmodels.api as sm import numpy as np file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file X,y = df[['Father', 'Mother']], df['Height'] # Assign the variables X_tilde = sm.add_constant(X) # Create X_tilde # 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, beta_2 = regression_model.params print('beta_0 is: ', beta_0) print('beta_1 is: ', beta_1) print('beta_2 is: ', beta_2) # Predict new values X_new = np.array([[65, 62],[70, 65],[75, 70]]) # 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('Predictions:', y_pred)
Nyt kun opetusjoukossamme on 2 piirrettä, meidän täytyy antaa 2 piirre-arvoa jokaiselle uudelle havainnolle, jolle haluamme tehdä ennusteen. Siksi esimerkissä yllä käytettiin np.array([[65, 62],[70, 65],[75, 70]])
. Se ennustaa y
kolmelle uudelle havainnolle: [Father:65,Mother:62]
, [Father:70, Mother:65]
, [Father:75, Mother:70]
.
Kiitos palautteestasi!