Bygge Lineær Regresjon
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 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
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 til variabelen y og funksjonsverdiene til X, og lager et spredningsdiagram.
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()
Finne parametere
For å implementere lineær regresjon i Scikit-learn, bruker vi klassen LinearRegression.
LinearRegression(fit_intercept=True, copy_X=True, n_jobs=None, positive=False)
Parametere
Klassen LinearRegression har flere parametere som styrer hvordan modellen tilpasses.
fit_intercept(standard=True): Bestemmer om konstantleddet (bias) skal beregnes for denne modellen. Hvis satt tilFalse, brukes ikke konstantledd i beregningene (dvs. data forventes å være sentrert).copy_X(standard=True): HvisTrue, kopieres X; ellers kan den bli overskrevet.n_jobs(standard=None): Antall jobber som skal brukes til beregningen. Dette gir kun hastighetsforbedring for n_targets > 1 og tilstrekkelig store problemer.Nonebetyr 1 med mindre det er i enjoblib.parallel_backend-kontekst.-1betyr bruk av alle prosessorer.positive(standard=False): Når satt tilTrue, tvinges koeffisientene til å være positive. Dette alternativet støttes kun for tette matriser.
Vanlige metoder
fit(X, y): Tilpass den lineære modellen.predict(X): Prediker ved bruk av den lineære modellen.score(X, y): Returnerer forklaringsgraden (determinasjonskoeffisienten) for prediksjonen.
Attributter
coef_: Estimerte koeffisienter for lineær regresjon.intercept_: Konstantledd i den lineære modellen.
I Scikit-learn bruker vi LinearRegression-klassen fra linear_model-modulen. I motsetning til NumPy definerer vi ikke graden her; denne klassen er spesifikt laget for lineære modeller. Vi bruker .fit()-metoden for å beregne parameterne.
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)
Dersom du ikke er kjent med syntaksen model.intercept_ og model.coef_, er dette en konvensjon i Scikit-learn. Attributter som beregnes (læres) under treningsprosessen ender alltid med en understrek _ (f.eks. intercept_, coef_).
intercept_ er en enkeltverdi, mens coef_ er et array som inneholder koeffisientene for hver funksjon (i enkel lineær regresjon har den kun ett element).
Lage prediksjoner
Nå kan vi plotte linjen og forutsi nye variabler ved å bruke den trente modellen.
123plt.scatter(X, y) # Build a scatter plot plt.plot(X, model.predict(X_reshaped), color='red') # Plot the line using predictions plt.show()
Nå som vi har den trente modellen, kan vi bruke .predict()-metoden for å forutsi nye verdier.
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å ganske enkelt å hente ut parameterne til en lineær regresjon. Men noen biblioteker kan også gi deg tilleggsinformasjon.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Fantastisk!
Completion rate forbedret til 3.33
Bygge Lineær Regresjon
Sveip for å vise menyen
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 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
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 til variabelen y og funksjonsverdiene til X, og lager et spredningsdiagram.
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()
Finne parametere
For å implementere lineær regresjon i Scikit-learn, bruker vi klassen LinearRegression.
LinearRegression(fit_intercept=True, copy_X=True, n_jobs=None, positive=False)
Parametere
Klassen LinearRegression har flere parametere som styrer hvordan modellen tilpasses.
fit_intercept(standard=True): Bestemmer om konstantleddet (bias) skal beregnes for denne modellen. Hvis satt tilFalse, brukes ikke konstantledd i beregningene (dvs. data forventes å være sentrert).copy_X(standard=True): HvisTrue, kopieres X; ellers kan den bli overskrevet.n_jobs(standard=None): Antall jobber som skal brukes til beregningen. Dette gir kun hastighetsforbedring for n_targets > 1 og tilstrekkelig store problemer.Nonebetyr 1 med mindre det er i enjoblib.parallel_backend-kontekst.-1betyr bruk av alle prosessorer.positive(standard=False): Når satt tilTrue, tvinges koeffisientene til å være positive. Dette alternativet støttes kun for tette matriser.
Vanlige metoder
fit(X, y): Tilpass den lineære modellen.predict(X): Prediker ved bruk av den lineære modellen.score(X, y): Returnerer forklaringsgraden (determinasjonskoeffisienten) for prediksjonen.
Attributter
coef_: Estimerte koeffisienter for lineær regresjon.intercept_: Konstantledd i den lineære modellen.
I Scikit-learn bruker vi LinearRegression-klassen fra linear_model-modulen. I motsetning til NumPy definerer vi ikke graden her; denne klassen er spesifikt laget for lineære modeller. Vi bruker .fit()-metoden for å beregne parameterne.
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)
Dersom du ikke er kjent med syntaksen model.intercept_ og model.coef_, er dette en konvensjon i Scikit-learn. Attributter som beregnes (læres) under treningsprosessen ender alltid med en understrek _ (f.eks. intercept_, coef_).
intercept_ er en enkeltverdi, mens coef_ er et array som inneholder koeffisientene for hver funksjon (i enkel lineær regresjon har den kun ett element).
Lage prediksjoner
Nå kan vi plotte linjen og forutsi nye variabler ved å bruke den trente modellen.
123plt.scatter(X, y) # Build a scatter plot plt.plot(X, model.predict(X_reshaped), color='red') # Plot the line using predictions plt.show()
Nå som vi har den trente modellen, kan vi bruke .predict()-metoden for å forutsi nye verdier.
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å ganske enkelt å hente ut parameterne til en lineær regresjon. Men noen biblioteker kan også gi deg tilleggsinformasjon.
Takk for tilbakemeldingene dine!