Une application web interactive pour explorer et comparer les algorithmes fondamentaux du Machine Learning : KNN, K-Means et Classification Ascendante Hiérarchique (CAH)
- KNN (K-Nearest Neighbors) - Classification supervisée
- K-Means - Clustering par partitionnement
- CAH (Hierarchical Clustering) - Clustering hiérarchique
- Design moderne avec gradients et glassmorphism
- Animations fluides et transitions CSS
- Interface responsive et intuitive
- Visualisations matplotlib enrichies
- Génération de données synthétiques personnalisable
- Méthode du coude pour K-Means
- Dendrogrammes interactifs pour la CAH
- Métriques de performance en temps réel
- Comparaison côte à côte des algorithmes
- Nombre d'échantillons
- Niveau de bruit
- Nombre de clusters
- Paramètres spécifiques à chaque algorithme
- Seeds aléatoires pour la reproductibilité
Python 3.8+
pip- Clonez le repository
git clone https://github.com/yourusername/ml-interactive-dashboard.git
cd ml-interactive-dashboard- Créez un environnement virtuel
python -m venv venv
source venv/bin/activate # Sur Windows: venv\Scripts\activate- Installez les dépendances
pip install -r requirements.txt- Lancez l'application
streamlit run streamlit_app.py- Ouvrez votre navigateur
L'application s'ouvre automatiquement sur http://localhost:8501
projet_ML/
│
├── streamlit_app.py # Application principale Streamlit
├── requirements.txt # Dépendances Python
├── README.md # Documentation
│
├── algorithms/ # Implémentations des algorithmes
│ ├── __init__.py
│ ├── knn.py # K-Nearest Neighbors
│ ├── kmeans.py # K-Means Clustering
│ └── hierarchical.py # Hierarchical Clustering
│
├── assets/ # Ressources (images, etc.)
│ └── dashboard_preview.png
│
└── tests/ # Tests unitaires
├── __init__.py
├── test_knn.py
├── test_kmeans.py
└── test_hierarchical.py
Classification supervisée basée sur la proximité
from algorithms.knn import KNN
# Initialisation
knn = KNN(k=5)
# Entraînement
knn.fit(X_train, y_train)
# Prédiction
predictions = knn.predict(X_test)Complexité : O(n·d) où n = nombre d'échantillons, d = dimensions
Avantages :
- Simple et intuitif
- Pas de phase d'entraînement
- Adaptatif aux nouvelles données
Limitations :
- Lent pour la prédiction
- Sensible au choix de k
- Curse of dimensionality
Clustering non-supervisé par partitionnement
from algorithms.kmeans import KMeans
# Initialisation
kmeans = KMeans(k=3, max_iters=100)
# Clustering
labels = kmeans.fit(X)
# Centroïdes
centroids = kmeans.centroidsComplexité : O(n·d·k·i) où i = nombre d'itérations
Avantages :
- Rapide et évolutif
- Garantie de convergence
- Efficace pour grands datasets
Limitations :
- Nécessite de choisir k
- Sensible à l'initialisation
- Suppose des clusters sphériques
Clustering hiérarchique bottom-up
from algorithms.hierarchical import HierarchicalClustering
# Initialisation
cah = HierarchicalClustering(method='ward')
# Construction de l'arbre
linkage_matrix = cah.fit(X)
# Extraction des clusters
labels = cah.get_clusters(n_clusters=3)Complexité : O(n³) en espace et temps
Avantages :
- Visualisation hiérarchique (dendrogramme)
- Pas besoin de k à l'avance
- Capture des structures complexes
Limitations :
- Très coûteux computationnellement
- Sensible au bruit
- Non adapté aux grands datasets
- Streamlit - Framework web interactif
- NumPy - Calcul scientifique
- Matplotlib - Visualisations
- Seaborn - Visualisations statistiques
- Scikit-learn - Métriques et datasets
- SciPy - Calculs scientifiques avancés
- Pandas - Manipulation de données
- Accuracy - Taux de prédictions correctes
- Precision, Recall, F1-Score - Métriques détaillées par classe
- Classification Report - Rapport complet
- Silhouette Score - Qualité de la séparation des clusters
- Inertie - Variance intra-cluster (K-Means)
- Méthode du coude - Détermination du k optimal
- Apprentissage interactif des algorithmes ML
- Visualisation des concepts abstraits
- Expérimentation avec différents paramètres
- Prototypage rapide d'algorithmes
- Comparaison de performances
- Génération de datasets synthétiques
- Démonstration de concepts ML
- Sélection d'algorithmes appropriés
- Analyse exploratoire de données
Les contributions sont les bienvenues ! Voici comment contribuer :
- Fork le projet
- Créez votre branche (
git checkout -b feature/AmazingFeature) - Commit vos changements (
git commit -m 'Add AmazingFeature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrez une Pull Request
- Suivre le style de code existant
- Ajouter des tests pour les nouvelles fonctionnalités
- Mettre à jour la documentation
- Commenter le code complexe
- Ajout de nouveaux algorithmes (SVM, Random Forest, DBSCAN)
- Support des datasets personnalisés (upload CSV)
- Export des résultats et visualisations
- Mode comparaison avancée avec cross-validation
- API REST pour l'accès programmatique
- Tutoriels interactifs intégrés
- Support multilingue
- Mode sombre
- Performance dégradée avec CAH pour n > 500 échantillons
- Pas de support pour données >2D dans les visualisations
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
Votre Nom
- GitHub: @yourusername
- LinkedIn: Votre Profil
- Email: your.email@example.com
- Merci à la communauté Streamlit pour l'excellent framework
- Inspiration tirée des cours de Machine Learning de Stanford
- Datasets synthétiques générés avec Scikit-learn
- Documentation Streamlit
- Scikit-learn User Guide
- Pattern Recognition and Machine Learning - Bishop
- The Elements of Statistical Learning - Hastie et al.
Fait avec ❤️ et ☕
Si ce projet vous a aidé, n'oubliez pas de lui donner une ⭐





