If you enjoy this project, feel free to give it a star ⭐️!
This project aims to implement a simple linear regression in Python, allowing you to predict the price of a car based on its mileage. It is a pedagogical application of one of the most widely used algorithms in supervised machine learning.
Linear regression is a statistical method that estimates the relationship between two numerical variables: an independent variable (here, mileage) and a dependent variable (here, price). The goal is to find the line that best fits the observed data.
For simple linear regression (with one independent variable), the mathematical form of the line is:
y = θ₀ + θ₁·x
- y : the value to predict (price)
- x : the input variable (mileage)
- θ₀ : the intercept
- θ₁ : the slope (coefficient)
Find values of θ₀ and θ₁ that minimize the gap between predictions and actual values in the dataset. This gap is measured by a loss function, often the MAE (Mean Absolute Error) or MSE (Mean Squared Error).
This is the algorithm used to adjust θ₀ and θ₁: at each iteration, the parameters are updated in the direction that reduces the loss function.
When variables have very different scales, you can normalize or standardize the data to accelerate and stabilize training.
Suppose the following dataset:
| km | price |
|---|---|
| 240000 | 3650 |
| 139800 | 3800 |
| 185530 | 4450 |
| 114800 | 5350 |
| ... | ... |
-
Initialization
Start with θ₀ = 0 and θ₁ = 0, so the line always predicts 0. -
Training
At each iteration, gradient descent adjusts θ₀ and θ₁ to reduce the error. -
Visualization
- Red dots: actual data points (price vs. mileage)
- Blue line: model prediction
-
Prediction
Once trained, the model can predict the price for a given mileage, for example:
If km = 90,000, then price ≈ θ₀ + θ₁·90,000 = 6569.18 -
Evaluation
After training, we evaluate the model quality with the loss function (for example, a MAPE of 10% means predictions are on average within 10% of actual values).
- Clone the repository
git clone https://github.com/MatLBS/ft_linear_regression_42.git
cd ft_linear_regression_42- Create a virtual environment and install dependencies
python -m venv myenv
source myenv/bin/activate
pip install -r requirements.txt- Run the program
python train.py # Train the model on data.csv
python predict.py # Predict the price for user input- Linear regression (Wikipedia)
- Gradient descent
- Introduction guide to Machine Learning at 42
- Learning rate in Regression models
Si ce projet vous plaît, n'hésitez pas à mettre une étoile ⭐️ !
Ce projet a pour objectif d’implémenter une régression linéaire simple en Python, permettant de prédire le prix d’une voiture en fonction de son kilométrage. Il s’agit d’une application pédagogique de l’un des algorithmes les plus utilisés en machine learning supervisé.
La régression linéaire est une méthode statistique qui permet d’estimer la relation entre deux variables numériques : une variable indépendante (ici le kilométrage) et une variable dépendante (ici le prix). Le but est de trouver la droite qui “colle au mieux” aux données observées.
Pour la régression linéaire simple (avec une variable indépendante), la forme mathématique de la droite est :
y = θ₀ + θ₁·x
- y : la variable à prédire (le prix)
- x : la variable d’entrée (le kilométrage)
- θ₀ : l’ordonnée à l’origine (intercept)
- θ₁ : la pente de la droite (coefficient)
Trouver les valeurs de θ₀ et θ₁ qui minimisent l’écart entre les prédictions et les valeurs réelles du dataset. Cet écart est mesuré par une fonction de coût (loss function), souvent la MAE (Mean Absolute Error) ou la MSE (Mean Squared Error).
C’est l’algorithme utilisé pour ajuster θ₀ et θ₁ : à chaque itération, on déplace les paramètres dans la direction qui réduit la fonction de coût.
Quand les valeurs des variables ont des échelles très différentes, on peut normaliser ou standardiser les données afin accélérer et stabiliser l’entraînement.
Supposons le dataset suivant :
| km | price |
|---|---|
| 240000 | 3650 |
| 139800 | 3800 |
| 185530 | 4450 |
| 114800 | 5350 |
| ... | ... |
-
Initialisation
On part avec θ₀ = 0 et θ₁ = 0, donc la droite prédit toujours 0. -
Entraînement
À chaque itération, la descente de gradient ajuste θ₀ et θ₁ pour réduire l’erreur. -
Visualisation
- Les points rouges : les vraies données (prix en fonction du kilométrage)
- La droite bleue : la prédiction du modèle
-
Prédiction
Une fois entraîné, le modèle peut prédire le prix pour un kilométrage donné, par exemple :
Si km = 90 000, alors price ≈ θ₀ + θ₁·90 000 = 6569.18 -
Évaluation
Après l’entraînement, on mesure la qualité du modèle avec la fonction de coût (par exemple, un MAPE de 10% signifie que les prédictions sont en moyenne à 10% près des valeurs réelles).
1.Clone the repository
git clone https://github.com/MatLBS/ft_linear_regression_42.git
cd ft_linear_regression_422.Create a virtual env and install the dependencies
python -m venv myenv
source myenv/bin/activate
pip install -r requirements.txt3.Execute the program
python train.py # Entraîne le modèle sur data.csv
python predict.py # Prédit le prix pour la valeur indiquée par l'utilisateur- Régression linéaire (Wikipedia)
- Descente de gradient
- Introduction guide to Machine Learning at 42
- Learning rate in Regression models