Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Bygga Linjär Regression | Sektion
Practice
Projects
Quizzes & Challenges
Frågesporter
Challenges
/
Grunder i Övervakad Inlärning

bookBygga Linjär Regression

Du känner redan till vad enkel linjär regression är och hur man hittar den linje som bäst passar datan. 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:

123456
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
copy

Datasettet har alltså 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.

123456
import matplotlib.pyplot as plt X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
copy

Hitta parametrar

För att implementera linjär regression i Scikit-learn används klassen LinearRegression.

LinearRegression(fit_intercept=True, copy_X=True, n_jobs=None, positive=False)

Parametrar

Klassen LinearRegression har flera parametrar som styr hur modellen anpassas.

  • fit_intercept (standard=True): Avgör om interceptet (bias) ska beräknas för denna modell. Om satt till False används inget intercept i beräkningarna (datan förväntas vara centrerad).
  • copy_X (standard=True): Om True kopieras X; annars kan det skrivas över.
  • n_jobs (standard=None): Antal jobb som används för beräkningen. Detta ger endast en prestandaförbättring för n_targets > 1 och tillräckligt stora problem. None betyder 1 om inte i ett joblib.parallel_backend-sammanhang. -1 innebär att alla processorer används.
  • positive (standard=False): Om satt till True tvingas koefficienterna vara positiva. Detta alternativ stöds endast för täta arrayer.

Vanliga metoder

  • fit(X, y): Anpassa den linjära modellen.
  • predict(X): Prediktera med den linjära modellen.
  • score(X, y): Returnera determinationskoefficienten för prediktionen.

Attribut

  • coef_: Uppskattade koefficienter för det linjära regressionsproblemet.
  • intercept_: Oberoende term i den linjära modellen.

I Scikit-learn använder vi klassen LinearRegression från modulen linear_model. Till skillnad från NumPy anger vi inte graden här; denna klass är specifikt utformad för linjära modeller. Vi använder metoden .fit() för att beräkna parametrarna.

Här är ett exempel:

1234567891011121314
from 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)
copy
Note
Notering

Om du inte är bekant med syntaxen model.intercept_ och model.coef_, är detta en konvention i Scikit-learn. Attribut som beräknas (lärs in) under träningsprocessen slutar alltid med ett understreck _ (t.ex. intercept_, coef_). intercept_ är ett enskilt värde, medan coef_ är en array som innehåller koefficienterna för varje variabel (vid enkel linjär regression finns endast ett värde).

Göra förutsägelser

Nu kan vi rita linjen och förutsäga nya variabler med hjälp av den tränade modellen.

123
plt.scatter(X, y) # Build a scatter plot plt.plot(X, model.predict(X_reshaped), color='red') # Plot the line using predictions plt.show()
copy

Nu när vi har den tränade modellen kan vi använda metoden .predict() för att förutsäga nya värden.

123
X_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)
copy

Det är alltså ganska enkelt att erhålla parametrarna för linjär regression. Men vissa bibliotek kan även ge ytterligare information.

question mark

Vilken klass används för att implementera linjär regression i Scikit-learn?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 3

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

bookBygga Linjär Regression

Svep för att visa menyn

Du känner redan till vad enkel linjär regression är och hur man hittar den linje som bäst passar datan. 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:

123456
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
copy

Datasettet har alltså 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.

123456
import matplotlib.pyplot as plt X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
copy

Hitta parametrar

För att implementera linjär regression i Scikit-learn används klassen LinearRegression.

LinearRegression(fit_intercept=True, copy_X=True, n_jobs=None, positive=False)

Parametrar

Klassen LinearRegression har flera parametrar som styr hur modellen anpassas.

  • fit_intercept (standard=True): Avgör om interceptet (bias) ska beräknas för denna modell. Om satt till False används inget intercept i beräkningarna (datan förväntas vara centrerad).
  • copy_X (standard=True): Om True kopieras X; annars kan det skrivas över.
  • n_jobs (standard=None): Antal jobb som används för beräkningen. Detta ger endast en prestandaförbättring för n_targets > 1 och tillräckligt stora problem. None betyder 1 om inte i ett joblib.parallel_backend-sammanhang. -1 innebär att alla processorer används.
  • positive (standard=False): Om satt till True tvingas koefficienterna vara positiva. Detta alternativ stöds endast för täta arrayer.

Vanliga metoder

  • fit(X, y): Anpassa den linjära modellen.
  • predict(X): Prediktera med den linjära modellen.
  • score(X, y): Returnera determinationskoefficienten för prediktionen.

Attribut

  • coef_: Uppskattade koefficienter för det linjära regressionsproblemet.
  • intercept_: Oberoende term i den linjära modellen.

I Scikit-learn använder vi klassen LinearRegression från modulen linear_model. Till skillnad från NumPy anger vi inte graden här; denna klass är specifikt utformad för linjära modeller. Vi använder metoden .fit() för att beräkna parametrarna.

Här är ett exempel:

1234567891011121314
from 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)
copy
Note
Notering

Om du inte är bekant med syntaxen model.intercept_ och model.coef_, är detta en konvention i Scikit-learn. Attribut som beräknas (lärs in) under träningsprocessen slutar alltid med ett understreck _ (t.ex. intercept_, coef_). intercept_ är ett enskilt värde, medan coef_ är en array som innehåller koefficienterna för varje variabel (vid enkel linjär regression finns endast ett värde).

Göra förutsägelser

Nu kan vi rita linjen och förutsäga nya variabler med hjälp av den tränade modellen.

123
plt.scatter(X, y) # Build a scatter plot plt.plot(X, model.predict(X_reshaped), color='red') # Plot the line using predictions plt.show()
copy

Nu när vi har den tränade modellen kan vi använda metoden .predict() för att förutsäga nya värden.

123
X_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)
copy

Det är alltså ganska enkelt att erhålla parametrarna för linjär regression. Men vissa bibliotek kan även ge ytterligare information.

question mark

Vilken klass används för att implementera linjär regression i Scikit-learn?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 3
some-alt