Kursinnehåll
Linjär Regression med Python
Linjär Regression med Python
Bygga Linjär Regression med NumPy
Du känner redan till vad enkel linjär regression är och hur man hittar den linje som bäst passar data. Nu kommer du att gå igenom alla steg för att bygga en linjär regression för en verklig datamängd.
Laddar data
Vi har en fil, simple_height_data.csv
, med data från våra exempel. Vi laddar filen och tittar 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
Datasettet har två kolumner: den första är 'Father'
, vilket är inmatningsfunktionen, och den andra är 'Height'
, vilket är vår målvariabel.
Vi tilldelar våra målvariabler till variabeln y
och funktionsvärden till X
och skapar ett spridningsdiagram.
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()
Hitta parametrar
NumPy har en praktisk funktion för att hitta parametrarna för linjär regression.
Linjär regression är en polynomregression av grad 1 (vi kommer att diskutera polynomregression i senare avsnitt). Därför behöver vi ange deg=1
för att få parametrarna för den linjära regressionen.
Här är ett exempel:
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)
Om du inte är bekant med syntaxen beta_1, beta_0 = np.polyfit(X,y,1)
, så kallas det för uppackning. Om du har en iterator (t.ex. lista, NumPy-array eller pandas-serie) som har två element, så innebär
a, b = my_iterator
detsamma som
a = my_iterator[0]
b = my_iterator[1]
Och eftersom returvärdet från funktionen polyfit()
är en NumPy-array med två värden, kan vi göra så här.
Göra förutsägelser
Nu kan vi rita linjen och förutsäga nya variabler med hjälp av parametrarna.
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 när vi har parametrarna kan vi använda linjär regressions-ekvationen för att förutsäga nya värden.
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 är alltså ganska enkelt att få parametrarna för den linjära regressionen. Men vissa bibliotek kan också ge dig extra information.
Tack för dina kommentarer!