Kursinnhold
Lineær Regresjon med Python
Lineær Regresjon med Python
Bygge Lineær Regresjon Med NumPy
Du kjenner allerede til hva enkel lineær regresjon er og hvordan man finner linjen som passer best til dataene. Nå skal du gå gjennom alle trinnene for å bygge en lineær regresjon for et virkelig datasett.
Laste inn data
Vi har en fil, simple_height_data.csv
, med dataene fra eksemplene våre. Vi skal laste inn filen og se på innholdet:
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
Datasettet har to kolonner: den første er 'Father'
, som er inndatafunksjonen, og den andre er 'Height'
, som er vår målvariabel.
Vi tilordner målverdiene våre til variabelen y
og funksjonsverdiene til X
, og lager et spredningsdiagram.
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()
Finne parametere
NumPy har en nyttig funksjon for å finne parameterne til lineær regresjon.
Lineær regresjon er en polynomregresjon av grad 1 (vi vil diskutere polynomregresjon i senere seksjoner). Derfor må vi sette deg=1
for å få parameterne for den lineære regresjonen.
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 kjent med syntaksen beta_1, beta_0 = np.polyfit(X,y,1)
, kalles dette oppakking. Hvis du har en iterator (for eksempel en liste, NumPy-array eller pandas-serie) som har to elementer, vil
a, b = my_iterator
være det samme som
a = my_iterator[0]
b = my_iterator[1]
Og siden returverdien fra funksjonen polyfit()
er et NumPy-array med to verdier, kan vi gjøre dette.
Lage prediksjoner
Nå kan vi plotte linjen og forutsi nye variabler ved hjelp av parameterne.
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()
Nå som vi har parameterne, kan vi bruke lineær regresjonslikningen til å forutsi nye verdier.
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å ganske enkelt å finne parameterne til lineær regresjon. Men noen biblioteker kan også gi deg tilleggsinformasjon.
Takk for tilbakemeldingene dine!