Skip to content

diamankayero/trainedml

Repository files navigation

trainedml

Framework pédagogique et modulaire de machine learning en Python

Documentation Webapp GitHub Tests Coverage


Sommaire

Matrice de corrélation Histogramme Courbe Comparaison de modèles


Présentation

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.

✨ Fonctionnalités principales

  • 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

Diagramme de Gantt

Diagramme de Gantt du projet


Architecture du projet

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.

Détail du package principal

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

Installation

Prérequis

  • Python 3.9 ou supérieur
  • pip

Étapes d'installation

  1. Cloner le dépôt

    git clone https://github.com/diamankayero/trainedml.git
    cd trainedml
  2. 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
  3. Installer les dépendances

    pip install -r requirements.txt

Utilisation rapide

Interface en ligne de commande (CLI)

Afficher l'aide :

python src/trainedml/cli.py --help

Exemples d'utilisation :

Benchmark comparatif sur le dataset Iris :

python src/trainedml/cli.py --benchmark --dataset iris

Entraîner un modèle KNN sur le dataset Wine :

python src/trainedml/cli.py --model knn --dataset wine

Lancer l'interface interactive :

streamlit run trainedml_webapp/src/app.py

L'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

API Python

Utilisation programmatique du framework avec différents jeux de données :

Exemple 1 : Dataset iris

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)

Exemple 2 : Dataset wine

from trainedml import Trainer

trainer = Trainer(dataset="wine", model="knn")
trainer.fit()
scores = trainer.evaluate()
print(scores)

Exemple 3 : Dataset personnalisé via URL

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)


Tests

Exécuter les tests unitaires :

pytest tests/

ou

python -m unittest discover tests/

Documentation

La documentation complète est disponible à plusieurs endroits :


Contribution

Les contributions sont les bienvenues ! Pour contribuer :

  1. Forkez le projet
  2. Créez une branche pour votre fonctionnalité (git checkout -b feature/AmazingFeature)
  3. Committez vos changements (git commit -m 'Add some AmazingFeature')
  4. Poussez vers la branche (git push origin feature/AmazingFeature)
  5. Ouvrez une Pull Request

Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.


Contact

Pour toute question, suggestion ou problème :


Remerciements

Projet réalisé individuellement sur la base d'un cahier des charges fourni par Bilel Bensaid.

Cahier des charges

Merci à tous les contributeurs qui ont participé à ce projet éducatif !

Releases

No releases published

Packages

No packages published

Languages