Python | Lineær regression ved hjælp af sklearn

Python | Lineær regression ved hjælp af sklearn

Forudsætning: Lineær regression

Lineær regression er en maskinlæringsalgoritme baseret på overvåget læring. Den udfører en regressionsopgave. Regression modellerer en målforudsigelsesværdi baseret på uafhængige variable. Det bruges mest til at finde ud af forholdet mellem variabler og prognoser. Forskellige regressionsmodeller adskiller sig afhængigt af - typen af ​​forhold mellem de afhængige og uafhængige variable, de overvejer, og antallet af uafhængige variabler, der anvendes. Denne artikel vil demonstrere, hvordan man bruger de forskellige Python-biblioteker til at implementere lineær regression på et givet datasæt. Vi vil demonstrere en binær lineær model, da denne vil være lettere at visualisere. I denne demonstration vil modellen bruge Gradient Descent til at lære. Du kan lære om det her.

Trin 1: Import af alle de 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>

Trin 2: Læsning af datasættet:

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

Produktion:

Trin 3: Udforsker 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()>

Produktion:

Trin 4: Datarensning

Python3




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

Trin 5: Træning af vores model

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

Produktion:

Trin 6: Udforsker vores resultater

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:

Vores models lave nøjagtighedsscore tyder på, at vores regressive model ikke passer særlig godt til de eksisterende data. Dette tyder på, at vores data ikke er egnet til lineær regression. Men nogle gange kan et datasæt acceptere en lineær regressor, hvis vi kun betragter en del af det. Lad os se efter den mulighed.

Trin 7: Arbejde med et mindre datasæt

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 allerede nu se, at de første 500 rækker følger en lineær model. Fortsætter med de samme trin 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))>

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:

Trin 8: Evalueringsmålinger for regression

Til sidst kontrollerer vi ydeevnen af ​​den lineære regressionsmodel ved hjælp af evalueringsmetrikker. Til regressionsalgoritmer bruger vi i vid udstrækning mean_absolute_error og mean_squared_error metrics til at kontrollere modellens ydeevne.

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

Produktion:

MAE: 0.7927322046360309 MSE: 1.0251137190180517 RMSE: 1.0124789968281078