TP4 - ML : régression ¶
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
Données¶
Présentation¶
A l'aide des données des territoires d’Ile-de-France, nous désirons prédire le salaire médian MED14
des communes.
Importation et affichage¶
Importer les données à l'aide de Pandas.
/!\ Il faut utiliser le paramètre
sep
de la fonctionread_csv
avec la valeur ";"
# réponse
Afficher les données.
# réponse
Afficher la structure des données.
# réponse
Données manquantes¶
Supprimer les variables (colonnes) avec "trop" de données manquantes.
# réponse
Supprimer les individus (lignes) avec des données manquantes
# réponse
Autres variables à supprimer¶
Supprimer les trois variables quantitatives entières (colonnes de type "int64") qui n'apportent rien ici.
# réponse
Variables qualitatives¶
Afficher les statistiques des variables qualitatives (colonnes de type "object").
# réponse
Ajoutons des colonnes Lotitude
et Longitude
.
data["Latitude"] = pd.to_numeric(data["geo_point_2d"].str.split(',').str.get(0))
data["Longitude"] = pd.to_numeric(data["geo_point_2d"].str.split(',').str.get(1))
Supprimons enfin les variables qualitatives.
data = data.select_dtypes(np.number)
Vérifier que les variables sont bien toutes renseignées et de type "float64".
# réponse
Séparation¶
Séparer la variable cible des variables prédictives.
# réponse
Préparer les échantillons d'apprentissage et de validation.
# réponse
Transformation¶
Echantillon d'apprentissage (données d'entraînement)¶
Normaliser les variables quantitatives :
- créer le transformateur
- appliquer cette transformation aux variables prédictives de l'échantillon d'apprentissage
# réponse
Echantillon de validation (données de test)¶
Appliquer cette transformation aux variables prédicitives de l'échantillon de validation.
# réponse
Apprentissage¶
Choix du modèle¶
Importer la classe du modèle des k plus proches voisins.
# réponse
Création du modèle¶
Pour le modèle choisi, créer un objet à partir de sa classe en prenant les hyper-paramètres par défaut.
# réponse
Apprentissage du modèle¶
Ajuster le modèle créé à partir des données d'entraînement.
# réponse
Validation du modèle¶
Avec le modèle ajusté, prédire la valeur de la variable cible pour les individus de l'échantillon de validation.
# réponse
On peut enfin valider notre modèle en mesurant sa qualité à l'aide de certains indicateurs : $R^2$, MCE, RMCE, ...
from sklearn.metrics import r2_score
from sklearn.metrics import mean_squared_error
# le R², à la différence des autres indicateurs, est calculé sur l’échantillon d’apprentissage !
# Il représente la part des variations de la variable cible expliquées par le modèle.
# Plus il est proche de 1, meilleur est le modèle.
print("R2 :", r2_score(y_train, modele_knn.predict(x_train)))
# les autres indicateurs sont basés sur l’échantillon de validation
print("MCE :", mean_squared_error(y_test, y_predict_knn))
print("RMCE :", np.sqrt(mean_squared_error(y_test, y_predict_knn)))
Sélection du meilleur modèle¶
Retour sur le choix des hyper-paramètres (validation croisée)¶
Faire varier les hyper-paramètres de notre modèle pour trouver la meilleure combinaison au regard du RMCE.
Utiliser pour cela le dictionnaire d’hyper-paramètres
{"n_neighbors":[2,5,10,50], "weights":['uniform','distance']}
.
# réponse
Autres modèles¶
En vous inspirant de ce qui précède, ajuster et calculer le RMCE pour les modèles suivants (hyper-paramètres par défaut) :
- Régression linéaire
- ElasticeNet
- SVR
# Régression linéaire
# ElasticNet
# SVR
Conclusion¶
Quel est le meilleur modèle ?