Python | Lineær regresjon ved hjelp av sklearn

Python | Lineær regresjon ved hjelp av sklearn

Forutsetning: Lineær regresjon

Lineær regresjon er en maskinlæringsalgoritme basert på overvåket læring. Den utfører en regresjonsoppgave. Regresjon modellerer en målprediksjonsverdi basert på uavhengige variabler. Det brukes mest for å finne ut forholdet mellom variabler og prognoser. Ulike regresjonsmodeller er forskjellige basert på – hva slags forhold mellom de avhengige og uavhengige variablene de vurderer og antall uavhengige variabler som brukes. Denne artikkelen skal demonstrere hvordan du bruker de forskjellige Python-bibliotekene til å implementere lineær regresjon på et gitt datasett. Vi vil demonstrere en binær lineær modell da denne vil være lettere å visualisere. I denne demonstrasjonen vil modellen bruke Gradient Descent for å lære. Du kan lære om det her.

Trinn 1: Importerer alle nødvendige biblioteker

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: Leser datasettet:

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()>

Produksjon:

Trinn 3: Utforsker dataspredningen

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()>

Produksjon:

Trinn 4: Datarensing

Python3




# Eliminating NaN or missing input numbers> df_binary.fillna(method> => 'ffill'> , inplace> => True> )>

Trinn 5: Trening av modellen vår

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))>

Produksjon:

Trinn 6: Utforsker resultatene våre

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>

Produksjon:

Den lave nøyaktighetsskåren til modellen vår antyder at vår regressive modell ikke passer særlig godt med eksisterende data. Dette antyder at våre data ikke er egnet for lineær regresjon. Men noen ganger kan et datasett godta en lineær regressor hvis vi bare vurderer en del av den. La oss se etter den muligheten.

Trinn 7: Arbeid med et mindre datasett

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> )>

Produksjon:

Vi kan allerede se at de første 500 radene følger en lineær modell. Fortsetter med de samme trinnene som før.

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))>

Produksjon:

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()>

Produksjon:

Trinn 8: Evalueringsberegninger for regresjon

Til slutt sjekker vi ytelsen til den lineære regresjonsmodellen ved hjelp av evalueringsmålinger. For regresjonsalgoritmer bruker vi mye mean_absolute_error og mean_squared_error-beregninger for å sjekke modellens ytelse.

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)>

Produksjon:

MAE: 0.7927322046360309 MSE: 1.0251137190180517 RMSE: 1.0124789968281078