Framework pédagogique et modulaire de machine learning en Python
- Présentation
- Diagramme de Gantt
- Architecture du projet
- Détail du package principal
- Installation
- Utilisation rapide
- Tests
- Documentation
- Contribution
- Licence
- Contact
- Remerciements
trainedml est un framework Python conçu pour l'apprentissage et la comparaison de modèles de machine learning sur des jeux de données classiques ou personnalisés.
- Code modulaire et documenté : Implémentations claires de KNN, régression logistique, random forest, etc.
- Interface en ligne de commande : Script CLI pour automatiser les pipelines ML (entraînement, benchmark, visualisation)
- Application web interactive : Interface Streamlit pour la démonstration et l'exploration
- Outils de visualisation : Heatmaps, histogrammes, courbes de performance
- Documentation complète : Documentation Sphinx et tests unitaires
Chaque dossier important contient un fichier markdown (README.md, DOC_UTILISATION.md, streamlit_app.md, etc.) détaillant commandes, usage et bonnes pratiques spécifiques.
trainedml/
├── .github/ # Workflows CI/CD GitHub Actions
├── docs/ # Documents PDF, rapports, etc. (voir docs/README.md)
├── GESTION_PROJET.md # Guide de gestion de projet, déploiement, CI/CD
├── LICENSE # Licence du projet
├── public/ # Images et ressources publiques (voir public/README.md)
├── pyproject.toml # Configuration du projet Python
├── README.md # Ce fichier (documentation racine)
├── requirements.txt # Dépendances Python
├── slides/ # Slides de présentation (voir slides/README.md)
├── src/ # Code source pour la webapp Streamlit et la CLI (voir src/README.md)
├── tests/ # Tests unitaires (voir tests/README.md)
├── trainedml/ # Package principal (voir détail ci-dessous)
├── trainedml_webapp/ # Application Streamlit (voir trainedml_webapp/README.md)
├── venv/ # Environnement virtuel Python
Chaque dossier important contient un fichier markdown (README.md, GESTION_PROJET.md, streamlit_app.md, etc.) détaillant commandes, usage et bonnes pratiques spécifiques.
💡 Remarque :
- Le vrai package Python (avec code, doc Sphinx, tests) se trouve dans
trainedml/trainedml.
- Les autres dossiers (public, docs, slides, etc.) servent à la documentation, aux ressources et à la présentation du projet.
Le cœur du framework se trouve dans le dossier trainedml/trainedml, qui contient :
trainedml/
├── src/trainedml/ # Code source du package Python (voir src/trainedml/README.md)
│ ├── __init__.py # API principale (Trainer)
│ ├── analyzer.py # Analyse exploratoire
│ ├── benchmark.py # Benchmark des modèles
│ ├── cli.py # Interface CLI
│ ├── evaluation.py # Métriques d'évaluation
│ ├── figure.py # Génération de figures
│ ├── visualization.py # Outils de visualisation
│ ├── data/ # Chargement des données (voir data/README.md)
│ ├── models/ # Modèles ML (voir models/README.md)
│ ├── utils/ # Fonctions utilitaires (voir utils/README.md)
│ ├── viz/ # Visualisations avancées (voir viz/README.md)
├── doc/ # Documentation Sphinx (voir doc/README.md)
├── tests/ # Tests unitaires pour chaque module (voir tests/README.md)
├── README.md # Documentation du package (niveau package)
├── DOC_UTILISATION.md # Guide d'utilisation détaillé
Chaque module/dossier important contient un fichier markdown détaillant son usage, ses commandes et ses bonnes pratiques. L'organisation facilite l’extension, la maintenance et la génération automatique de la documentation API (Sphinx).
- Python 3.9 ou supérieur
- pip
-
Cloner le dépôt
git clone https://github.com/diamankayero/trainedml.git cd trainedml -
Créer un environnement virtuel (recommandé)
py -3.11 -m venv venv # Windows : venv\Scripts\activate # oubien si ça marche pas tu fais les commandes suivantes pour activer venv Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass .\venv\Scripts\Activate.ps1 # pour le cas de ma machine # pour desactiver le venv on fait deactivate # pour suprimer le venv Remove-Item -Recurse -Force venv # Linux/Mac : source venv/bin/activate
-
Installer les dépendances
pip install -r requirements.txt
Afficher l'aide :
python src/trainedml/cli.py --helpExemples d'utilisation :
Benchmark comparatif sur le dataset Iris :
python src/trainedml/cli.py --benchmark --dataset irisEntraîner un modèle KNN sur le dataset Wine :
python src/trainedml/cli.py --model knn --dataset wineLancer l'interface interactive :
streamlit run trainedml_webapp/src/app.pyL'application permet de :
- Charger différents datasets
- Comparer les performances des modèles
- Visualiser les résultats avec des graphiques interactifs
- Effectuer des prédictions manuelles
Utilisation programmatique du framework avec différents jeux de données :
from trainedml import Trainer
trainer = Trainer(dataset="iris", model="random_forest")
trainer.fit()
scores = trainer.evaluate()
print(scores)
# Prédiction sur de nouvelles données
predictions = trainer.predict([[5.1, 3.5, 1.4, 0.2]])
print(predictions)from trainedml import Trainer
trainer = Trainer(dataset="wine", model="knn")
trainer.fit()
scores = trainer.evaluate()
print(scores)from trainedml import Trainer
trainer = Trainer(
url="https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv",
target="quality",
model="logistic"
)
trainer.fit()
scores = trainer.evaluate()
print(scores)Exécuter les tests unitaires :
pytest tests/ou
python -m unittest discover tests/La documentation complète est disponible à plusieurs endroits :
- Documentation en ligne (GitHub Pages)
- Documentation Sphinx locale
- Guide d'utilisation général
- Documentation de l'application web
Les contributions sont les bienvenues ! Pour contribuer :
- Forkez le projet
- Créez une branche pour votre fonctionnalité (
git checkout -b feature/AmazingFeature) - Committez vos changements (
git commit -m 'Add some AmazingFeature') - Poussez vers la branche (
git push origin feature/AmazingFeature) - Ouvrez une Pull Request
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Pour toute question, suggestion ou problème :
- Ouvrez une issue sur GitHub
- Proposez une pull request
Projet réalisé individuellement sur la base d'un cahier des charges fourni par Bilel Bensaid.
Merci à tous les contributeurs qui ont participé à ce projet éducatif !




