Projet du cours IFT712 - Techniques d'apprentissage | Université de Sherbrooke | Automne 2025 Équipe : Adrien SKRZYPCZAK · Cédric HAN · Robin BECARD
Ce projet implémente et compare 6 algorithmes de classification scikit-learn sur le jeu de données NASA Nearest Earth Objects (90 836 astéroïdes, dont ~9,7 % dangereux). L'objectif est de prédire la dangerosité d'un objet céleste en respectant les meilleures pratiques de validation croisée, de recherche d'hyperparamètres et de gestion du déséquilibre de classes.
| Algorithme | Classe | Approche |
|---|---|---|
| Arbre de Décision | DecisionTreeModel |
Hiérarchique, interprétable |
| SVM | SVMClassifier |
Non-linéaire, marges maximales |
| Régression Logistique | LogisticRegressionClassifier |
Linéaire, baseline |
| Bayes Naïf | NaiveBayesClassifier |
Probabiliste |
| Réseau de Neurones (MLP) | NNClassifier |
Non-linéaire, profond |
| Moindres Carrés (Ridge) | LeastSquaresClassifier |
Linéaire, baseline |
| Modèle | Accuracy | Recall | F1-Score | AUC-ROC | Temps (s) |
|---|---|---|---|---|---|
| Least Squares | 73.71% | 98.98% | 42.49% | - | 0.01 |
| SVM | 77.22% | 99.43% | 46.71% | 0.902 | 1026.8 |
| Régression Logistique | 78.49% | 95.02% | 46.23% | 0.889 | 0.31 |
| Arbre de Décision | 91.43% | 13.57% | 23.56% | 0.916 | 0.12 |
| Réseau de Neurones | 91.45% | 15.10% | 29.16% | 0.915 | 9.05 |
| Bayes Naïf | 83.23% | 46.61% | 35.10% | 0.864 | 0.02 |
Choix de métrique : dans un contexte de défense planétaire, le Recall est la métrique prioritaire - manquer un astéroïde dangereux a des conséquences catastrophiques.
- Contexte - Introduction et objectifs
- Jeu de données - Exploration et analyse des données NASA NEO
- Implémentation - Développement et entraînement des 6 modèles
- Résultats - Comparaison des performances et visualisations
- Conclusions - Synthèse et recommandations
- Suppression des colonnes invariantes (
orbiting_body,sentry_object) et identifiants (id,name) - Transformation logarithmique (
np.log1p) surest_diameter_max,relative_velocity,miss_distance - RobustScaler pour limiter l'impact des outliers
- Split stratifié 80/20 pour préserver le ratio de classes (~9.73 % dangereux)
- Pondération des classes (
class_weight='balanced') sur les modèles linéaires et SVM
Python >= 3.8git clone https://github.com/RobinBecard/NASA_Near-Earth-Objects_Classification.git
cd NASA_Near-Earth-Objects_Classification
pip install -r requirements.txtjupyter notebook notebooks/IFT712_Project.ipynbTous les paramètres (chemins, hyperparamètres, seeds) sont centralisés dans config.yaml :
from src.config import get_config
config = get_config()
dataset_path = config.get_path('paths.dataset')python src/optimize_all_models.py
# Interface interactive pour sélectionner les modèles à optimiser
# Les meilleurs hyperparamètres sont exportés au format YAMLIFT712_Project/
├── README.md
├── config.yaml # Configuration centralisée
├── requirements.txt
├── IFT712_Project.pdf # Rapport final
├── src/
│ ├── config.py # Gestionnaire de configuration
│ ├── data/ # Chargement et prétraitement
│ ├── models/ # 6 algorithmes de classification
│ └── utils/ # Visualisations et utilitaires
├── notebooks/
│ └── IFT712_Project.ipynb # Notebook principal
├── datasets/
│ └── neo.csv # Données NASA NEO
└── results/ # Modèles, métriques, graphiques
Cours : IFT712 - Techniques d'apprentissage · Université de Sherbrooke · Automne 2025