logo

Python | Régression linéaire utilisant Sklearn

Prérequis: Régression linéaire

La régression linéaire est un algorithme d'apprentissage automatique basé sur l'apprentissage supervisé. Il effectue une tâche de régression. La régression modélise une valeur de prédiction cible basée sur des variables indépendantes. Il est principalement utilisé pour découvrir la relation entre les variables et les prévisions. Les différents modèles de régression diffèrent en fonction du type de relation entre les variables dépendantes et indépendantes qu'ils prennent en compte et du nombre de variables indépendantes utilisées. Cet article va montrer comment utiliser les différentes bibliothèques Python pour implémenter la régression linéaire sur un ensemble de données donné. Nous démontrerons un modèle linéaire binaire car il sera plus facile à visualiser. Dans cette démonstration, le modèle utilisera Gradient Descent pour apprendre. Vous pouvez en apprendre davantage ici.



Étape 1: Importer toutes les bibliothèques requises

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>

>

>

Étape 2: Lecture de l'ensemble de données :

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

xd xd signification
>

>

Sortir:

Étape 3: Explorer la dispersion des données

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

>

>

Sortir:

Étape 4: Nettoyage des données

Python3




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

>

>

Étape 5 : Former notre modèle

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

>

>

Sortir:

installation maven

Étape 6 : Explorer nos résultats

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>

>

>

Sortir:

Le faible score de précision de notre modèle suggère que notre modèle régressif ne correspond pas très bien aux données existantes. Cela suggère que nos données ne conviennent pas à la régression linéaire. Mais parfois, un ensemble de données peut accepter un régresseur linéaire si l’on n’en considère qu’une partie. Vérifions cette possibilité.

Étape 7 : Travailler avec un ensemble de données plus petit

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

>

>

Sortir:

On voit déjà que les 500 premières lignes suivent un modèle linéaire. Continuez avec les mêmes étapes que précédemment.

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

>

>

Sortir:

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

>

>

Sortir:

Étape 8 : Métriques d'évaluation pour la régression

Enfin, nous vérifions les performances du modèle de régression linéaire à l'aide de métriques d'évaluation. Pour les algorithmes de régression, nous utilisons largement les métriques Mean_absolute_error et Mean_squared_error pour vérifier les performances du modèle.

Python3

cartes Java




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

>

>

Sortir:

MAE: 0.7927322046360309 MSE: 1.0251137190180517 RMSE: 1.0124789968281078>