Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

📊 Prédiction de la note des restaurants avec KNN Regression

Ce projet a pour objectif de prédire la note agrégée des restaurants à l'aide d'un algorithme de régression KNN (K-Nearest Neighbors) en se basant sur plusieurs caractéristiques issues d'un dataset extrait de la plateforme Zomato.


🔧 Technologies utilisées

  • Python 3
  • Pandas
  • NumPy
  • Matplotlib / Seaborn
  • Scikit-learn

📁 Fichier utilisé

Le fichier zomato.csv contient des données sur des milliers de restaurants, notamment :

  • Le nombre de votes
  • Le prix moyen (Price range)
  • La géolocalisation (Latitude, Longitude)
  • Si le restaurant propose la commande en ligne ou la réservation de table
  • La note moyenne donnée par les clients (Aggregate rating), qui constitue la variable cible

🔍 Objectif

Prédire la note d'un restaurant à partir de ses caractéristiques.


⚙️ Étapes du pipeline

1. Chargement et nettoyage des données

On sélectionne uniquement les colonnes pertinentes pour la prédiction. On mappe les colonnes booléennes (Oui/Non → 1/0), et on supprime les lignes avec des valeurs manquantes.

df = df[['Votes', 'Price range', 'Latitude', 'Longitude',
         'Has Online delivery', 'Has Table booking', 'Aggregate rating']]

2. Standardisation des données

On applique un StandardScaler pour mettre toutes les variables à la même échelle.

3. Séparation des données

On divise le dataset en données d'entraînement (80%) et de test (20%) via train_test_split.

4. Entraînement du modèle

On entraîne un KNeighborsRegressor avec n_neighbors=5.

5. Évaluation du modèle

On évalue le modèle avec les métriques classiques :

  • MAE (Mean Absolute Error)
  • MSE (Mean Squared Error)
  • RMSE (Root Mean Squared Error)
  • R² Score

On trace aussi un scatter plot entre les valeurs réelles et prédites.


📈 Visualisations

✔️ Corrélations

Une matrice de corrélation est affichée pour mieux comprendre les liens entre les variables.

✔️ Histogrammes

Des histogrammes des différentes colonnes sont affichés pour analyser les distributions.

✔️ Courbe de prédiction

Une visualisation permet de comparer visuellement les prédictions à la réalité.


🧠 Exemple de prédiction

# Exemple avec un resto fictif
nouveaux_restos = np.array([[250, 3, 12.9, 77.6, 1, 1]])
pred_knn = knn.predict(scaler.transform(nouveaux_restos))

📌 Résultat : note prédite pour ce restaurant en fonction de ses caractéristiques.


🧪 Améliorations possibles

  • Tester différents k avec GridSearchCV
  • Comparer avec d'autres modèles (LinearRegression, DecisionTree, etc.)
  • Prendre en compte d'autres variables comme Cuisines, City, etc. avec de l'encodage

✅ Résultats obtenus

Le modèle KNN donne des résultats satisfaisants pour ce type de données, mais il peut être sensible aux outliers ou à une mauvaise mise à l’échelle des variables.


📂 Structure du projet

📦knn_zomato/
 ┣ 📄 zomato.csv
 ┣ 📄 knn_model.py
 ┗ 📄 README.md

✍️ Auteur

Projet réalisé par Thomas Clerc

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages