Python | Lineárna regresia pomocou sklearn

Python | Lineárna regresia pomocou sklearn

Predpoklad: Lineárna regresia

Lineárna regresia je algoritmus strojového učenia založený na učení pod dohľadom. Vykonáva regresnú úlohu. Regresia modeluje cieľovú predikčnú hodnotu na základe nezávislých premenných. Väčšinou sa používa na zisťovanie vzťahu medzi premennými a prognózovaním. Rôzne regresné modely sa líšia na základe – druhu vzťahu medzi závislými a nezávislými premennými, ktoré zvažujú, a počtu použitých nezávislých premenných. Tento článok demonštruje, ako používať rôzne knižnice Pythonu na implementáciu lineárnej regresie na daný súbor údajov. Ukážeme binárny lineárny model, pretože to bude jednoduchšie vizualizovať. V tejto ukážke model použije na učenie sa gradientový zostup. Môžete sa o tom dozvedieť tu.

Krok 1: Import všetkých požadovaných knižníc

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>

Krok 2: Čítanie súboru údajov:

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

Výkon:

Krok 3: Skúmanie rozptylu údajov

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

Výkon:

Krok 4: Čistenie dát

Python3




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

Krok 5: Školenie nášho modelu

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

Výkon:

Krok 6: Skúmanie našich výsledkov

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>

Výkon:

Nízke skóre presnosti nášho modelu naznačuje, že náš regresívny model veľmi nezodpovedá existujúcim údajom. To naznačuje, že naše údaje nie sú vhodné na lineárnu regresiu. Niekedy však môže súbor údajov akceptovať lineárny regresor, ak vezmeme do úvahy iba jeho časť. Preverme si túto možnosť.

Krok 7: Práca s menším súborom údajov

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

Výkon:

Už teraz vidíme, že prvých 500 riadkov sleduje lineárny model. Pokračujte rovnakými krokmi ako predtým.

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

Výkon:

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

Výkon:

Krok 8: Hodnotiace metriky pre regresiu

Nakoniec skontrolujeme výkonnosť modelu lineárnej regresie pomocou hodnotiacich metrík. Pre regresné algoritmy široko používame metriky mean_absolute_error a mean_squared_error na kontrolu výkonnosti modelu.

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

Výkon:

MAE: 0.7927322046360309 MSE: 1.0251137190180517 RMSE: 1.0124789968281078