logo

Python | Tiesinė regresija naudojant sklearn

Būtina sąlyga: Tiesinė regresija

Tiesinė regresija yra mašininio mokymosi algoritmas, pagrįstas prižiūrimu mokymusi. Jis atlieka regresijos užduotį. Regresija modeliuoja tikslinę prognozės vertę, pagrįstą nepriklausomais kintamaisiais. Jis dažniausiai naudojamas norint išsiaiškinti ryšį tarp kintamųjų ir prognozavimo. Skirtingi regresijos modeliai skiriasi pagal – priklausomų ir nepriklausomų kintamųjų ryšį, į juos atsižvelgiama ir naudojamų nepriklausomų kintamųjų skaičių. Šiame straipsnyje bus parodyta, kaip naudoti įvairias Python bibliotekas tam tikro duomenų rinkinio tiesinei regresijai įgyvendinti. Mes parodysime dvejetainį tiesinį modelį, nes jį bus lengviau įsivaizduoti. Šioje demonstracijoje modelis naudos Gradiento nusileidimą mokytis. Apie tai galite sužinoti čia.

1 žingsnis: Importuojamos visos reikalingos bibliotekos



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>

>

>

2 žingsnis: Skaitant duomenų rinkinį:

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

>

>

Išvestis:

3 veiksmas: Duomenų sklaidos tyrinėjimas

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

>

>

Išvestis:

4 veiksmas: Duomenų valymas

Python3




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

>

>

5 veiksmas: Mūsų modelio mokymas

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

>

>

Išvestis:

java tostring

6 veiksmas: Naršydami mūsų rezultatus

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>

>

>

Išvestis:

Žemas mūsų modelio tikslumo balas rodo, kad mūsų regresinis modelis nelabai derėjo su esamais duomenimis. Tai rodo, kad mūsų duomenys nėra tinkami tiesinei regresijai. Tačiau kartais duomenų rinkinys gali priimti tiesinį regresorių, jei atsižvelgsime tik į jo dalį. Patikrinkime tokią galimybę.

7 veiksmas: Darbas su mažesniu duomenų rinkiniu

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

>

>

Išvestis:

Jau dabar matome, kad pirmosios 500 eilučių seka linijinį modelį. Tęskite tuos pačius veiksmus, kaip ir anksčiau.

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

>

>

Išvestis:

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

>

>

Išvestis:

8 veiksmas: Regresijos vertinimo metrika

Galiausiai įvertinimo metrikos pagalba patikriname tiesinės regresijos modelio veikimą. Regresijos algoritmams modelio veikimui patikrinti plačiai naudojame vidutinės_absoliutinės_klaidos ir vidutinės_kvadratinės klaidos metrikas.

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

>

>

Išvestis:

MAE: 0.7927322046360309 MSE: 1.0251137190180517 RMSE: 1.0124789968281078>