Cursusinhoud
Lineaire Regressie Met Python
Lineaire Regressie Met Python
Meervoudige Lineaire Regressie Opbouwen
De OLS
-klasse maakt het mogelijk om Meervoudige Lineaire Regressie op dezelfde manier op te bouwen als Eenvoudige Lineaire Regressie. Helaas ondersteunt de functie np.polyfit()
echter niet het geval met meerdere kenmerken.
We blijven werken met de OLS
-klasse.
X̃-matrix opbouwen
We gebruiken dezelfde dataset als in het voorbeeld van eenvoudige lineaire regressie, maar nu bevat deze ook de lengte van de moeder als tweede kenmerk. We laden deze en bekijken de X
-variabele:
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())
Onthoud dat we OLS(y, X_tilde)
moeten gebruiken om het OLS
-object te initialiseren. Zoals je ziet bevat de X-variabele al twee kenmerken in aparte kolommen. Om X_tilde te verkrijgen, hoeven we alleen maar enen toe te voegen als eerste kolom. De functie sm.add_constant(X)
doet precies dat!
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())
Het vinden van de parameters
Uitstekend! Nu kunnen we het model bouwen, de parameters bepalen en voorspellingen doen op dezelfde manier als in de vorige sectie.
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)
Nu onze trainingsset 2 kenmerken bevat, moeten we voor elk nieuw geval dat we willen voorspellen 2 kenmerken opgeven. Daarom werd np.array([[65, 62],[70, 65],[75, 70]])
gebruikt in het bovenstaande voorbeeld. Hiermee wordt y
voorspeld voor 3 nieuwe gevallen: [Father:65,Mother:62]
, [Father:70, Mother:65]
, [Father:75, Mother:70]
.
Bedankt voor je feedback!