Opbygning af Lineær Regression
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:
123456import 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-funktionen, og den anden er 'Height', som er vores målvariabel.
Vi tildeler vores målvariabler til variablen y og funktionsværdier til X og opretter et scatterplot.
123456import matplotlib.pyplot as plt X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
Bestemmelse af parametre
For at implementere lineær regression i Scikit-learn anvendes klassen LinearRegression.
LinearRegression(fit_intercept=True, copy_X=True, n_jobs=None, positive=False)
Parametre
Klassen LinearRegression har flere parametre, der styrer, hvordan modellen tilpasses.
fit_intercept(standard=True): Bestemmer om intercept (bias) skal beregnes for denne model. Hvis sat tilFalse, bruges ingen intercept i beregningerne (dvs. data forventes at være centreret).copy_X(standard=True): HvisTrue, kopieres X; ellers kan det blive overskrevet.n_jobs(standard=None): Antallet af jobs, der skal bruges til beregningen. Dette giver kun en hastighedsforøgelse for n_targets > 1 og tilstrækkeligt store problemer.Nonebetyder 1, medmindre det er i enjoblib.parallel_backend-kontekst.-1betyder brug af alle processorer.positive(standard=False): Når sat tilTrue, tvinges koefficienterne til at være positive. Denne mulighed understøttes kun for tætte arrays.
Almindelige metoder
fit(X, y): Tilpas den lineære model.predict(X): Forudsig ved brug af den lineære model.score(X, y): Returner determinanskoefficienten for forudsigelsen.
Attributter
coef_: Estimerede koefficienter for det lineære regressionsproblem.intercept_: Uafhængig led i den lineære model.
I Scikit-learn anvendes klassen LinearRegression fra modulet linear_model. I modsætning til NumPy angives graden ikke her; denne klasse er specifikt designet til lineære modeller. Metoden .fit() bruges til at beregne parametrene.
Her er et eksempel:
1234567891011121314from sklearn.linear_model import LinearRegression import numpy as np # Convert the pandas Series to a NumPy array, then reshape X_reshaped = X.values.reshape(-1, 1) model = LinearRegression() model.fit(X_reshaped, y) # Train the model beta_0 = model.intercept_ # Get the intercept (beta_0) beta_1 = model.coef_[0] # Get the coefficient (beta_1) print('beta_0 is', beta_0) print('beta_1 is', beta_1)
Hvis du ikke er bekendt med syntaksen model.intercept_ og model.coef_, er dette en konvention i Scikit-learn. Attributter, der beregnes (læres) under træningsprocessen, ender altid med en understregning _ (f.eks. intercept_, coef_).
intercept_ er en enkelt værdi, mens coef_ er et array, der indeholder koefficienterne for hver feature (i simpel lineær regression indeholder det kun ét element).
Udarbejdelse af forudsigelser
Nu kan vi plotte linjen og forudsige nye variabler ved hjælp af den trænede model.
123plt.scatter(X, y) # Build a scatter plot plt.plot(X, model.predict(X_reshaped), color='red') # Plot the line using predictions plt.show()
Nu hvor vi har den trænede model, kan vi bruge .predict()-metoden til at forudsige nye værdier.
123X_new = np.array([[65], [70], [75]]) # Feature values (must be 2D) y_pred = model.predict(X_new) # Predict the target print('Predicted y: ', y_pred)
Det er altså ret nemt at få parametrene for lineær regression. Men nogle biblioteker kan også give dig ekstra information.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Fantastisk!
Completion rate forbedret til 3.33
Opbygning af Lineær Regression
Stryg for at vise menuen
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:
123456import 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-funktionen, og den anden er 'Height', som er vores målvariabel.
Vi tildeler vores målvariabler til variablen y og funktionsværdier til X og opretter et scatterplot.
123456import matplotlib.pyplot as plt X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
Bestemmelse af parametre
For at implementere lineær regression i Scikit-learn anvendes klassen LinearRegression.
LinearRegression(fit_intercept=True, copy_X=True, n_jobs=None, positive=False)
Parametre
Klassen LinearRegression har flere parametre, der styrer, hvordan modellen tilpasses.
fit_intercept(standard=True): Bestemmer om intercept (bias) skal beregnes for denne model. Hvis sat tilFalse, bruges ingen intercept i beregningerne (dvs. data forventes at være centreret).copy_X(standard=True): HvisTrue, kopieres X; ellers kan det blive overskrevet.n_jobs(standard=None): Antallet af jobs, der skal bruges til beregningen. Dette giver kun en hastighedsforøgelse for n_targets > 1 og tilstrækkeligt store problemer.Nonebetyder 1, medmindre det er i enjoblib.parallel_backend-kontekst.-1betyder brug af alle processorer.positive(standard=False): Når sat tilTrue, tvinges koefficienterne til at være positive. Denne mulighed understøttes kun for tætte arrays.
Almindelige metoder
fit(X, y): Tilpas den lineære model.predict(X): Forudsig ved brug af den lineære model.score(X, y): Returner determinanskoefficienten for forudsigelsen.
Attributter
coef_: Estimerede koefficienter for det lineære regressionsproblem.intercept_: Uafhængig led i den lineære model.
I Scikit-learn anvendes klassen LinearRegression fra modulet linear_model. I modsætning til NumPy angives graden ikke her; denne klasse er specifikt designet til lineære modeller. Metoden .fit() bruges til at beregne parametrene.
Her er et eksempel:
1234567891011121314from sklearn.linear_model import LinearRegression import numpy as np # Convert the pandas Series to a NumPy array, then reshape X_reshaped = X.values.reshape(-1, 1) model = LinearRegression() model.fit(X_reshaped, y) # Train the model beta_0 = model.intercept_ # Get the intercept (beta_0) beta_1 = model.coef_[0] # Get the coefficient (beta_1) print('beta_0 is', beta_0) print('beta_1 is', beta_1)
Hvis du ikke er bekendt med syntaksen model.intercept_ og model.coef_, er dette en konvention i Scikit-learn. Attributter, der beregnes (læres) under træningsprocessen, ender altid med en understregning _ (f.eks. intercept_, coef_).
intercept_ er en enkelt værdi, mens coef_ er et array, der indeholder koefficienterne for hver feature (i simpel lineær regression indeholder det kun ét element).
Udarbejdelse af forudsigelser
Nu kan vi plotte linjen og forudsige nye variabler ved hjælp af den trænede model.
123plt.scatter(X, y) # Build a scatter plot plt.plot(X, model.predict(X_reshaped), color='red') # Plot the line using predictions plt.show()
Nu hvor vi har den trænede model, kan vi bruge .predict()-metoden til at forudsige nye værdier.
123X_new = np.array([[65], [70], [75]]) # Feature values (must be 2D) y_pred = model.predict(X_new) # Predict the target print('Predicted y: ', y_pred)
Det er altså ret nemt at få parametrene for lineær regression. Men nogle biblioteker kan også give dig ekstra information.
Tak for dine kommentarer!