{"id":29487607,"url":"https://github.com/nano-a/medicinal-plant-classifier","last_synced_at":"2026-02-07T04:32:26.247Z","repository":{"id":303491004,"uuid":"1015642284","full_name":"Nano-a/medicinal-plant-classifier","owner":"Nano-a","description":"Classificateur de plantes médicinales basé sur RandomForest. Prédiction binaire avec explications et métriques complètes (accuracy, F1, ROC). Interface web interactive.","archived":false,"fork":false,"pushed_at":"2025-07-07T23:00:36.000Z","size":5913,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-24T07:57:00.609Z","etag":null,"topics":["botany","classification-algorithm","data-science","flask","machine-learning","medicinal-plants","plant-classification","python","random-forest"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Nano-a.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-07T20:18:20.000Z","updated_at":"2025-07-08T23:34:07.000Z","dependencies_parsed_at":"2025-07-08T00:42:03.977Z","dependency_job_id":null,"html_url":"https://github.com/Nano-a/medicinal-plant-classifier","commit_stats":null,"previous_names":["nano-a/medicinal-plant-classifier"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Nano-a/medicinal-plant-classifier","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nano-a%2Fmedicinal-plant-classifier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nano-a%2Fmedicinal-plant-classifier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nano-a%2Fmedicinal-plant-classifier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nano-a%2Fmedicinal-plant-classifier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Nano-a","download_url":"https://codeload.github.com/Nano-a/medicinal-plant-classifier/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nano-a%2Fmedicinal-plant-classifier/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29186736,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T03:35:06.566Z","status":"ssl_error","status_checked_at":"2026-02-07T03:34:57.604Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["botany","classification-algorithm","data-science","flask","machine-learning","medicinal-plants","plant-classification","python","random-forest"],"created_at":"2025-07-15T09:14:17.077Z","updated_at":"2026-02-07T04:32:26.219Z","avatar_url":"https://github.com/Nano-a.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🌱 Medicinal Plant Classifier – Classificateur de Plantes Médicinales\nProjet universitaire développé par Abderrahman AJINOU (Université Paris Cité, N° Étudiant : 22116322)\n\n---\n\n## 🤖 Pourquoi ce projet est-il un vrai projet d'intelligence artificielle ?\nCe projet n'est pas juste un formulaire ou un site web : il s'agit d'une application d'intelligence artificielle appliquée à la botanique. Voici pourquoi :\n\n- **Utilisation du machine learning** : le cœur du projet repose sur un modèle d'apprentissage automatique (RandomForest, etc.) pour classer les plantes selon leurs caractéristiques.\n- **Manipulation de données réelles** : le projet utilise un jeu de données de plantes, avec des attributs réels (type de feuille, habitat, couleur de la fleur, etc.).\n- **Prétraitement et évaluation** : le code inclut l'encodage, la normalisation, la séparation train/test, et le calcul de métriques (accuracy, recall, F1-score, courbe ROC).\n- **Interface interactive** : l'utilisateur peut saisir les caractéristiques d'une plante et obtenir une prédiction en temps réel, avec explications et visualisations.\n- **Respect des standards IA** : le projet suit les bonnes pratiques du machine learning (prétraitement, modularité, visualisation, évaluation).\n\nEn résumé : ce classificateur est un vrai projet d'IA (machine learning appliqué à la botanique), et non un simple projet d'algorithmique ou d'interface. Il peut être présenté comme tel dans un contexte académique.\n\n---\n\n## 🚀 Présentation\nMedicinal Plant Classifier est une application web qui prédit si une plante est médicinale ou non, à partir de ses caractéristiques. Le projet est développé en Python 3.10 avec Flask pour l’interface web, et propose un design moderne inspiré de la nature (palette verte, images, icônes SVG, Tailwind).\n\n---\n\n## 🖼️ Galerie du Projet\n\n### Interface Utilisateur\n\u003cdiv align=\"center\" style=\"display: flex; flex-wrap: wrap; justify-content: space-between; gap: 15px; margin: 20px 0;\"\u003e\n  \u003cimg src=\"Photo%20Presentation/1.png\" alt=\"Page d'accueil - Sélection de film\" style=\"width: 48%; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);\" /\u003e\n  \u003cimg src=\"Photo%20Presentation/2.png\" alt=\"Résultats de recommandation\" style=\"width: 48%; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);\" /\u003e\n\u003c/div\u003e\n\n### Fonctionnalités Avancées\n\u003cdiv align=\"center\" style=\"margin: 20px 0;\"\u003e\n  \u003cimg src=\"Photo%20Presentation/3.png\" alt=\"Analyse des données - Graphique des genres\" style=\"width: 65%; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);\" /\u003e\n\u003c/div\u003e\n\n### Détails Techniques\n\u003cdiv align=\"center\" style=\"display: flex; flex-wrap: wrap; justify-content: space-between; gap: 15px; margin: 20px 0;\"\u003e\n  \u003cimg src=\"Photo%20Presentation/4.png\" alt=\"Architecture du système\" style=\"width: 48%; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);\" /\u003e\n  \u003cimg src=\"Photo%20Presentation/5.png\" alt=\"Performance du modèle\" style=\"width: 48%; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);\" /\u003e\n\u003c/div\u003e\n\n*Captures d'écran montrant les différentes facettes du système de recommandation*\n\n---\n\n## 🗂️ Structure du projet\n```\nMedicinal Plant Classifier/\n├── app.py                  # Point d'entrée Flask\n├── requirements.txt        # Dépendances Python\n├── model/\n│   └── plant_classifier.py # Logique IA (RandomForest, prétraitement, évaluation)\n├── controller/\n│   └── routes.py           # Routes Flask (MVC)\n├── templates/\n│   └── index.html          # Page principale (formulaire, résultats dynamiques)\n├── view/\n│   └── results.html        # (optionnel) Page de résultats\n├── static/\n│   ├── images/             # Images, icônes Lucide, visualisations\n│   ├── css/\n│   │   └── style.css       # Styles personnalisés (optionnel)\n│   └── visualizations/     # Graphiques générés (ROC, confusion, distribution)\n├── visualizations/\n│   ├── roc_curve.png\n│   ├── confusion_matrix.png\n│   └── class_distribution.png\n├── data/\n│   ├── plants.csv          # Jeu de données principal\n│   └── plants_extended.csv # (optionnel)\n├── devbook.md              # Suivi du développement (étapes, TODO)\n├── generate_images.py      # Script pour générer des images de visualisation\n└── Tache.txt               # Notes et tâches diverses\n```\n\n---\n\n## 🛠️ Installation et environnement\n### 1. Via Miniconda (recommandé)\n```bash\n# Installer Miniconda si besoin : https://docs.conda.io/en/latest/miniconda.html\nsource ~/miniconda3/etc/profile.d/conda.sh\nconda create -n plant-ia python=3.10\nconda activate plant-ia\npip install -r requirements.txt\n```\n### 2. Via venv (si Python 3.10+ installé)\n```bash\npython3.10 -m venv venv\nsource venv/bin/activate\npip install -r requirements.txt\n```\n\n---\n\n## 📦 Dépendances principales\n- Flask==2.3.3\n- pandas==2.1.4\n- scikit-learn==1.3.2\n- matplotlib==3.8.2\n- numpy==1.26.3\n- seaborn==0.13.0\n\nToutes les versions sont précisées dans `requirements.txt`.\n\n---\n\n## ⚙️ Fonctionnement \u0026 points d’entrée\n- `app.py` : Lance l’interface web Flask (formulaire, prédiction, résultats dynamiques)\n- `model/plant_classifier.py` : Logique IA (prétraitement, entraînement, prédiction, évaluation)\n- `controller/routes.py` : Routes Flask (MVC)\n- `templates/index.html` : Formulaire principal, affichage dynamique des résultats\n- `static/images/` : Images, icônes, visualisations\n\n---\n\n## 📊 Données\n- `data/plants.csv` : Jeu de données principal (caractéristiques des plantes)\n- `data/plants_extended.csv` : Variante ou extension du dataset\n\n---\n\n## 🌐 Utilisation\n1. Lancer l’application web\n   ```bash\n   conda activate plant-ia  # ou source venv/bin/activate\n   python app.py\n   ```\n2. Accéder à l’interface : http://localhost:5000\n3. Remplir le formulaire avec les caractéristiques de la plante\n4. Cliquer sur « Analyser »\n5. Obtenir la prédiction (médicinale ou non), les explications et les métriques\n\n---\n\n## 📈 Visualisations\nDes graphiques sont générés automatiquement pour analyser le modèle :\n- `static/images/class_distribution_train.png` : Distribution des classes (train)\n- `static/images/confusion_matrix.png` : Matrice de confusion\n- `static/images/roc_curve.png` : Courbe ROC\n- `static/images/feature_importance.png` : Importance des features\n\nPour générer ou regénérer les graphiques :\n```bash\npython generate_images.py\n```\n\n---\n\n## 🧪 Tests \u0026 vérifications\n- Vérifier que l’application se lance sans erreur\n- Tester plusieurs combinaisons dans le formulaire\n- Les métriques (accuracy, recall, F1-score) s’affichent après chaque prédiction\n\n---\n\n## 📝 Bonnes pratiques \u0026 conseils d’étudiant\n- **Ne versionnez pas** les fichiers volumineux ou sensibles (`.gitignore` déjà configuré)\n- **Gardez l’environnement isolé** (conda ou venv)\n- **Commentez votre code** pour mieux comprendre plus tard\n- **Utilisez le devbook.md** pour suivre l’avancement et ne rien oublier\n- **N’hésitez pas à demander de l’aide** si vous bloquez sur un bug ou une question IA\n\n---\n\n## 👤 Auteur\nAbderrahman AJINOU  \nÉtudiant en 2ᵉ année licence Informatique Générale  \nUniversité Paris Cité, Campus Grand Moulin  \nMail : abderrahman.ajinou@etu.u-paris.fr\n\n---\n\n## 📚 Ressources utiles\n- [Documentation Flask](https://flask.palletsprojects.com/)\n- [Documentation scikit-learn](https://scikit-learn.org/)\n- [Documentation pandas](https://pandas.pydata.org/)\n- [Documentation matplotlib](https://matplotlib.org/)\n- [Miniconda](https://docs.conda.io/en/latest/miniconda.html)\n\n🏆 Pour toute question ou suggestion, n’hésitez pas à me contacter !\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnano-a%2Fmedicinal-plant-classifier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnano-a%2Fmedicinal-plant-classifier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnano-a%2Fmedicinal-plant-classifier/lists"}