Nödvändig förutsättning: Linjär regression
Linjär regression är en maskininlärningsalgoritm baserad på övervakad inlärning. Den utför en regressionsuppgift. Regression modellerar ett målförutsägelsevärde baserat på oberoende variabler. Det används mest för att ta reda på sambandet mellan variabler och prognoser. Olika regressionsmodeller skiljer sig beroende på – vilken typ av samband mellan de beroende och oberoende variablerna de överväger och antalet oberoende variabler som används. Den här artikeln kommer att demonstrera hur man använder de olika Python-biblioteken för att implementera linjär regression på en given datamängd. Vi kommer att demonstrera en binär linjär modell eftersom denna blir lättare att visualisera. I den här demonstrationen kommer modellen att använda Gradient Descent för att lära sig. Du kan lära dig om det här.
Steg 1: Importera alla nödvändiga bibliotek
Python3
import> numpy as np> import> pandas as pd> import> seaborn as sns> import> matplotlib.pyplot as plt> from> sklearn>import> preprocessing, svm> from> sklearn.model_selection>import> train_test_split> from> sklearn.linear_model>import> LinearRegression> |
>
>
Steg 2: Läser datasetet:
Python3
df>=> pd.read_csv(>'bottle.csv'>)> df_binary>=> df[[>'Salnty'>,>'T_degC'>]]> > # Taking only the selected two attributes from the dataset> df_binary.columns>=> [>'Sal'>,>'Temp'>]> #display the first 5 rows> df_binary.head()> |
skapande av orakelbord
>
>
Produktion:
Steg 3: Utforska dataspridningen
Python3
#plotting the Scatter plot to check relationship between Sal and Temp> sns.lmplot(x>=>'Sal'>, y>=>'Temp'>, data>=> df_binary, order>=> 2>, ci>=> None>)> plt.show()> |
>
>
Produktion:

Steg 4: Datarensning
Python3
boolesk i c
# Eliminating NaN or missing input numbers> df_binary.fillna(method>=>'ffill'>, inplace>=> True>)> |
>
>
Steg 5: Utbilda vår modell
Python3
X>=> np.array(df_binary[>'Sal'>]).reshape(>->1>,>1>)> y>=> np.array(df_binary[>'Temp'>]).reshape(>->1>,>1>)> > # Separating the data into independent and dependent variables> # Converting each dataframe into a numpy array> # since each dataframe contains only one column> df_binary.dropna(inplace>=> True>)> > # Dropping any rows with Nan values> X_train, X_test, y_train, y_test>=> train_test_split(X, y, test_size>=> 0.25>)> > # Splitting the data into training and testing data> regr>=> LinearRegression()> > regr.fit(X_train, y_train)> print>(regr.score(X_test, y_test))> |
alfabet till siffror
>
>
Produktion:
Steg 6: Utforskar våra resultat
Python3
y_pred>=> regr.predict(X_test)> plt.scatter(X_test, y_test, color>=>'b'>)> plt.plot(X_test, y_pred, color>=>'k'>)> > plt.show()> # Data scatter of predicted values> |
>
>
Produktion:
Den låga noggrannhetspoängen för vår modell tyder på att vår regressiva modell inte passar särskilt bra med befintliga data. Detta tyder på att våra data inte är lämpliga för linjär regression. Men ibland kan en datauppsättning acceptera en linjär regressor om vi bara tar hänsyn till en del av den. Låt oss se efter den möjligheten.
Steg 7: Arbeta med en mindre datauppsättning
Python3
df_binary500>=> df_binary[:][:>500>]> > # Selecting the 1st 500 rows of the data> sns.lmplot(x>=>'Sal'>, y>=>'Temp'>, data>=> df_binary500,> >order>=> 2>, ci>=> None>)> |
>
>
Produktion:
Vi kan redan nu se att de första 500 raderna följer en linjär modell. Fortsätter med samma steg som tidigare.
Python3
df_binary500.fillna(method>=>'fill'>, inplace>=> True>)> > X>=> np.array(df_binary500[>'Sal'>]).reshape(>->1>,>1>)> y>=> np.array(df_binary500[>'Temp'>]).reshape(>->1>,>1>)> > df_binary500.dropna(inplace>=> True>)> X_train, X_test, y_train, y_test>=> train_test_split(X, y, test_size>=> 0.25>)> > regr>=> LinearRegression()> regr.fit(X_train, y_train)> print>(regr.score(X_test, y_test))> |
755 chmod
>
>
Produktion:
Python3
y_pred>=> regr.predict(X_test)> plt.scatter(X_test, y_test, color>=>'b'>)> plt.plot(X_test, y_pred, color>=>'k'>)> > plt.show()> |
>
>
Produktion:

Steg 8: Utvärderingsmått för regression
Till sist kontrollerar vi prestandan för den linjära regressionsmodellen med hjälp av utvärderingsmått. För regressionsalgoritmer använder vi i stor utsträckning mean_absolute_error och mean_squared_error-mått för att kontrollera modellens prestanda.
Python3
from> sklearn.metrics>import> mean_absolute_error,mean_squared_error> > mae>=> mean_absolute_error(y_true>=>y_test,y_pred>=>y_pred)> #squared True returns MSE value, False returns RMSE value.> mse>=> mean_squared_error(y_true>=>y_test,y_pred>=>y_pred)>#default=True> rmse>=> mean_squared_error(y_true>=>y_test,y_pred>=>y_pred,squared>=>False>)> > print>(>'MAE:'>,mae)> print>(>'MSE:'>,mse)> print>(>'RMSE:'>,rmse)> |
>
git pull syntax
>
Produktion:
MAE: 0.7927322046360309 MSE: 1.0251137190180517 RMSE: 1.0124789968281078>