0% ont trouvé ce document utile (0 vote)
16 vues4 pages

TP ML Regression Avancee

Ce TP sur la régression avancée vise à prédire le prix des maisons en utilisant le California Housing Dataset. Les étapes incluent le chargement et l'exploration des données, la séparation des ensembles d'entraînement et de test, la construction de modèles de régression, la comparaison de leurs performances, et l'optimisation des hyperparamètres. Enfin, une évaluation finale et une visualisation de l'importance des variables sont réalisées pour interpréter les résultats.

Transféré par

Hanene Ghazouani
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
16 vues4 pages

TP ML Regression Avancee

Ce TP sur la régression avancée vise à prédire le prix des maisons en utilisant le California Housing Dataset. Les étapes incluent le chargement et l'exploration des données, la séparation des ensembles d'entraînement et de test, la construction de modèles de régression, la comparaison de leurs performances, et l'optimisation des hyperparamètres. Enfin, une évaluation finale et une visualisation de l'importance des variables sont réalisées pour interpréter les résultats.

Transféré par

Hanene Ghazouani
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

TP Machine Learning – Régression avancée : Prédiction du prix des

maisons
🎯 Objectif : Mettre en œuvre plusieurs modèles de régression, les comparer et optimiser le
meilleur. Ce TP vous fera pratiquer la préparation de données, la comparaison de modèles
et la recherche d’hyperparamètres.

1. Chargement du jeu de données


Le jeu de données utilisé est le California Housing Dataset, disponible directement dans
scikit-learn.

from [Link] import fetch_california_housing


import pandas as pd

data = fetch_california_housing(as_frame=True)
df = [Link]
[Link]()

2. Exploration des données

import seaborn as sns


import [Link] as plt

print([Link]())
print([Link]())

[Link]([Link](), annot=True, cmap="coolwarm")


[Link]()

Questions :

 - Quelles sont les variables les plus corrélées avec la variable cible MedHouseVal ?
 - Y a-t-il des valeurs extrêmes ou aberrantes ?

3. Séparation des données

from sklearn.model_selection import train_test_split

X = [Link]("MedHouseVal", axis=1)
y = df["MedHouseVal"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

4. Construction d’un pipeline ML

from [Link] import StandardScaler


from [Link] import Pipeline
from sklearn.linear_model import LinearRegression
from [Link] import mean_squared_error

pipe_lr = Pipeline([
("scaler", StandardScaler()),
("model", LinearRegression())
])

pipe_lr.fit(X_train, y_train)
y_pred = pipe_lr.predict(X_test)

rmse = mean_squared_error(y_test, y_pred, squared=False)


print(f"RMSE (régression linéaire) : {rmse:.3f}")

5. Comparaison de plusieurs modèles

from [Link] import RandomForestRegressor, GradientBoostingRegressor


from [Link] import SVR

models = {
"Linear Regression": LinearRegression(),
"Random Forest": RandomForestRegressor(random_state=42),
"Gradient Boosting": GradientBoostingRegressor(random_state=42),
"Support Vector Regressor": SVR()
}

results = {}
for name, model in [Link]():
pipe = Pipeline([
("scaler", StandardScaler()),
("model", model)
])
[Link](X_train, y_train)
y_pred = [Link](X_test)
rmse = mean_squared_error(y_test, y_pred, squared=False)
results[name] = rmse

results_df = [Link].from_dict(results, orient="index",


columns=["RMSE"]).sort_values("RMSE")
print(results_df)

Question : Quel modèle obtient le plus faible RMSE ? Pourquoi, selon toi ?

6. Optimisation d’hyperparamètres (Grid Search)

from sklearn.model_selection import GridSearchCV

params = {
"model__n_estimators": [50, 100, 200],
"model__max_depth": [5, 10, None],
"model__min_samples_split": [2, 5, 10]
}

pipe_rf = Pipeline([
("scaler", StandardScaler()),
("model", RandomForestRegressor(random_state=42))
])

grid = GridSearchCV(pipe_rf, params, cv=3, scoring="neg_root_mean_squared_error",


n_jobs=-1)
[Link](X_train, y_train)

print("Meilleurs paramètres :", grid.best_params_)


print("Meilleur score (RMSE négatif) :", grid.best_score_)

7. Évaluation finale

best_model = grid.best_estimator_
y_pred = best_model.predict(X_test)
rmse = mean_squared_error(y_test, y_pred, squared=False)
print(f"RMSE sur test : {rmse:.3f}")

8. Interprétation et visualisation

import numpy as np
importances = best_model.named_steps["model"].feature_importances_
features = [Link]

[Link](x=importances, y=features)
[Link]("Importance des variables (Random Forest)")
[Link]()

🚀 Extensions possibles
 - Tester XGBoost ou LightGBM
 - Ajouter des interactions entre variables
 - Analyser les résidus du modèle
 - Visualiser les performances via un graphique prédictions vs valeurs réelles

Vous aimerez peut-être aussi