logo

Python | Regresia liniară folosind sklearn

Condiție preliminară: Regresie liniara

Regresia liniară este un algoritm de învățare automată bazat pe învățarea supravegheată. Îndeplinește o sarcină de regresie. Regresia modelează o valoare de predicție țintă bazată pe variabile independente. Este folosit mai ales pentru a afla relația dintre variabile și prognoză. Diferite modele de regresie diferă în funcție de – tipul de relație dintre variabilele dependente și independente, pe care le iau în considerare și numărul de variabile independente utilizate. Acest articol va demonstra cum să utilizați diferitele biblioteci Python pentru a implementa regresia liniară pe un anumit set de date. Vom demonstra un model liniar binar, deoarece acesta va fi mai ușor de vizualizat. În această demonstrație, modelul va folosi Gradient Descent pentru a învăța. Puteți afla despre asta aici.



Pasul 1: Importul tuturor bibliotecilor necesare

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>

>

care a făcut școala
>

Pasul 2: Citirea setului de date:

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

>

>

Ieșire:

Pasul 3: Explorarea dispersării datelor

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

>

>

Ieșire:

Pasul 4: Curățarea datelor

Python3




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

>

>

Pasul 5: Pregătirea modelului nostru

Python3


Java comparabil



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

>

>

Ieșire:

Pasul 6: Explorând rezultatele noastre

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>

>

>

Ieșire:

Scorul de precizie scăzut al modelului nostru sugerează că modelul nostru regresiv nu s-a potrivit foarte bine cu datele existente. Acest lucru sugerează că datele noastre nu sunt potrivite pentru regresia liniară. Dar uneori, un set de date poate accepta un regresor liniar dacă luăm în considerare doar o parte a acestuia. Să verificăm această posibilitate.

Pasul 7: Lucrul cu un set de date mai mic

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

>

>

Ieșire:

Putem observa deja că primele 500 de rânduri urmează un model liniar. Continuând cu aceiași pași ca înainte.

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

>

>

Ieșire:

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

>

>

Ieșire:

Pasul 8: Măsuri de evaluare pentru regresie

În cele din urmă, verificăm performanța modelului de regresie liniară cu ajutorul unor metrici de evaluare. Pentru algoritmii de regresie folosim pe scară largă valorile mean_absolute_error și mean_squared_error pentru a verifica performanța modelului.

Python3

sistem de operare în rețea




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

>

>

Ieșire:

MAE: 0.7927322046360309 MSE: 1.0251137190180517 RMSE: 1.0124789968281078>