Kursusindhold
Lineær Regression med Python
Lineær Regression med Python
Opbygning af Lineær Regression med NumPy
Du kender allerede til simpel lineær regression og hvordan man finder den linje, der passer bedst til dataene. Nu vil du gennemgå alle trin i opbygningen af en lineær regression for et rigtigt datasæt.
Indlæsning af data
Vi har en fil, simple_height_data.csv
, med data fra vores eksempler. Vi indlæser filen og ser nærmere på den:
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 print(df.head()) # Print the first 5 instances from a dataset
Datasættet har to kolonner: den første er 'Father'
, som er input-featuret, og den anden er 'Height'
, som er vores målvariabel.
Vi tildeler vores målvariabler til variablen y
og featureværdier til X
og opretter et scatterplot.
import pandas as pd import matplotlib.pyplot as plt 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 = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
Bestemmelse af parametre
NumPy har en praktisk funktion til at finde parametrene for lineær regression.
Lineær regression er en polynomiel regression af grad 1 (vi vil tale om polynomiel regression i senere afsnit). Derfor skal vi angive deg=1
for at få parametrene til lineær regression.
Her er et eksempel:
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) # Read the files X, y = df['Father'], df['Height'] # Assign the variables beta_1, beta_0 = np.polyfit(X, y, 1) # Get the parameters print('beta_0 is', beta_0) print('beta_1 is', beta_1)
Hvis du ikke er bekendt med syntaksen beta_1, beta_0 = np.polyfit(X,y,1)
, kaldes det for unpacking. Hvis du har en iterator (f.eks. en liste, NumPy-array eller pandas-serie), der har to elementer, svarer det at skrive
a, b = my_iterator
til det samme som
a = my_iterator[0]
b = my_iterator[1]
Og da returværdien fra funktionen polyfit()
er et NumPy-array med to værdier, er det tilladt at gøre dette.
Udførelse af forudsigelser
Nu kan vi plotte linjen og forudsige nye variabler ved hjælp af parametrene.
import pandas as pd import numpy as np import matplotlib.pyplot as plt 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'] # Assign the variables beta_1, beta_0 = np.polyfit(X, y, 1) # Get the parameters plt.scatter(X,y) # Build a scatter plot plt.plot(X, beta_0 + beta_1 * X, color='red') # Plot the line plt.show()
Nu hvor vi har parametrene, kan vi bruge lineær regressionsligningen til at forudsige nye værdier.
import pandas as pd import numpy as np import matplotlib.pyplot as plt 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'] # Assign the variables beta_1, beta_0 = np.polyfit(X, y, 1) # Get the parameters X_new = np.array([65, 70, 75]) # Feature values of new instances y_pred = beta_0 + beta_1 * X_new # Predict the target print('Predicted y: ', y_pred)
Det er altså ret nemt at finde parametrene for lineær regression. Men nogle biblioteker kan også give dig ekstra information.
Tak for dine kommentarer!