Skip to content

MatLBS/ft_linear_regression_42

Repository files navigation

🇬🇧 ft_linear_regression_42

If you enjoy this project, feel free to give it a star ⭐️!

Introduction

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.


Key concepts of linear regression

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.

1. The regression line

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)

2. Training objective

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

3. Gradient descent

This is the algorithm used to adjust θ₀ and θ₁: at each iteration, the parameters are updated in the direction that reduces the loss function.

4. Feature scaling

When variables have very different scales, you can normalize or standardize the data to accelerate and stabilize training.


Illustrated example

Suppose the following dataset:

km price
240000 3650
139800 3800
185530 4450
114800 5350
... ...
  1. Initialization
    Start with θ₀ = 0 and θ₁ = 0, so the line always predicts 0.

  2. Training
    At each iteration, gradient descent adjusts θ₀ and θ₁ to reduce the error.

  3. Visualization

    • Red dots: actual data points (price vs. mileage)
    • Blue line: model prediction
linear_regression
  1. 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
    
  2. 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).


Usage

  1. Clone the repository
git clone https://github.com/MatLBS/ft_linear_regression_42.git
cd ft_linear_regression_42
  1. Create a virtual environment and install dependencies
python -m venv myenv
source myenv/bin/activate
pip install -r requirements.txt
  1. Run the program
python train.py          # Train the model on data.csv
python predict.py        # Predict the price for user input

Useful resources


🇫🇷 ft_linear_regression_42

Si ce projet vous plaît, n'hésitez pas à mettre une étoile ⭐️ !

Introduction

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é.


Concepts clés de la régression linéaire

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.

1. La droite de régression

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)

2. Objectif de l’entraînement

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

3. Descente de gradient

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.

4. Mise à l’échelle

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.


Exemple illustré

Supposons le dataset suivant :

km price
240000 3650
139800 3800
185530 4450
114800 5350
... ...
  1. Initialisation
    On part avec θ₀ = 0 et θ₁ = 0, donc la droite prédit toujours 0.

  2. Entraînement
    À chaque itération, la descente de gradient ajuste θ₀ et θ₁ pour réduire l’erreur.

  3. Visualisation

    • Les points rouges : les vraies données (prix en fonction du kilométrage)
    • La droite bleue : la prédiction du modèle
linear_regression
  1. 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
    
  2. É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).


Exécution

1.Clone the repository

git clone https://github.com/MatLBS/ft_linear_regression_42.git
cd ft_linear_regression_42

2.Create a virtual env and install the dependencies

python -m venv myenv
source myenv/bin/activate
pip install -r requirements.txt

3.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

Ressources utiles


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published