Ce projet implémente une régression linéaire simple pour estimer le prix d'une voiture à partir de son kilométrage.
Le modèle utilise la formule suivante :
estimatePrice = theta0 + theta1 * mileage
Les kilomètres sont normalisés pendant l'entraînement pour garder des valeurs entre 0 et 1 :
km_normalized = (km - min_km) / (max_km - min_km)
min_km et max_km sont sauvegardés avec le modèle afin que predict.py puisse appliquer la même normalisation aux valeurs saisies par l'utilisateur.
data.csv Dataset contenant les colonnes km et price
train.py Entraîne le modèle avec une descente de gradient
predict.py Prédit un prix à partir d'un kilométrage utilisateur
precision.py Calcule MAE, MSE et R2
plot.py Affiche les données et la droite de régression
model.json est généré par train.py et n'est pas versionné.
Entraîner le modèle :
python3 train.pyFaire une prédiction :
python3 predict.pyCalculer la précision du modèle :
python3 precision.pyAfficher le graphe :
python3 plot.pyAprès entraînement sur data.csv, le modèle obtenu est :
theta0 = 8008.439832646822
theta1 = -4656.591444722153
Avec les métriques suivantes :
MAE: 557.84
MSE: 445645.25
R2: 0.7330
Le graphe ci-dessous montre les données du dataset et la droite apprise par la régression linéaire :
L'entraînement commence avec :
theta0 = 0
theta1 = 0
A chaque itération, le programme calcule l'erreur entre le prix prédit et le prix réel, puis met à jour les paramètres avec la descente de gradient :
tmpTheta0 = learningRate * (1 / m) * sum(prediction - real_price)
tmpTheta1 = learningRate * (1 / m) * sum((prediction - real_price) * km_normalized)
theta0 = theta0 - tmpTheta0
theta1 = theta1 - tmpTheta1
On soustrait le gradient parce qu'il indique la direction dans laquelle l'erreur augmente. En allant dans la direction opposée, le modèle réduit progressivement son erreur.
Le projet gère notamment :
- fichier
data.csvmanquant - dataset vide
- colonnes
kmoupriceabsentes - ligne CSV invalide
- valeur non numérique
- division par zéro si tous les kilomètres sont identiques
- absence de
model.jsondanspredict.py
Bonus implémentés :
- affichage des points du dataset
- affichage de la droite de régression
- calcul de la MAE
- calcul de la MSE
- calcul du R2
