Ce projet implémente une application web de classification d'images utilisant la régression logistique vue comme un réseau de neurones. L'objectif est de classifier les images comme contenant un chat ou non-chat de manière automatique.
- Implémenter un algorithme de régression logistique avec approche réseau de neurones
- Créer une interface web interactive pour les prédictions
- Développer une API REST pour l'intégration
- Comprendre les fondamentaux du machine learning
logistic-regression-neural-network/
├── app.py # Application Flask principale
├── requirements.txt # Dépendances Python
├── README.md # Documentation du projet
├── .gitignore # Fichiers ignorés par Git
├── templates/ # Templates HTML
│ ├── index.html # Page d'accueil moderne
│ ├── demo.html # Galerie de démo interactive
│ └── docs.html # Documentation technique
├── static/
│ └── images/ # Images pour la démo
│ ├── my_image.jpg
│ ├── image1.png
│ ├── image2.png
│ └── ...
└── Logistic Regression as a Neural Network/
├── Logistic.ipynb # Notebook Jupyter du TP
├── lr_utils.py # Fonctions utilitaires
└── datasets/ # Données d'entraînement
├── train_catvnoncat.h5
└── test_catvnoncat.h5
- Python 3.7+
- pip (gestionnaire de paquets Python)
-
Cloner le dépôt
git clone https://github.com/leadylearn/logistic-regression-neural-network.git cd logistic-regression-neural-network -
Installer les dépendances
pip install -r requirements.txt
-
Lancer l'application
python app.py
-
Accéder à l'application Ouvrez votre navigateur sur http://localhost:5000
- Page d'accueil : Upload d'images pour prédiction
- Page de démo : Tests avec images exemples
- Documentation : Guide technique complet
curl -X POST -F "image=@votre_image.jpg" http://localhost:5000/predict{
"success": true,
"prediction": "cat",
"confidence": 0.85,
"image": "base64_encoded_image"
}- Accuracy (entraînement): ~99%
- Accuracy (test): ~70%
- Dataset: 209 images train, 50 images test
- Temps de prédiction: <100ms
- Taille du modèle: ~100KB
- Input: Images 64×64 pixels RGB
- Output: Classification binaire (chat/non-chat)
- Algorithme: Régression logistique
- Framework: NumPy + Flask
- Python 3.7+ : Langage principal
- Flask : Framework web
- NumPy : Calculs numériques
- SciPy : Fonctions scientifiques
- PIL/Pillow : Traitement d'images
- HTML5 : Structure des pages
- Bootstrap 5 : Framework CSS responsive
- JavaScript : Interactivité côté client
- NumPy : Opérations matricielles
- Matplotlib : Visualisations
- h5py : Gestion des datasets
| Méthode | Endpoint | Description |
|---|---|---|
| GET | / |
Page d'accueil avec interface de prédiction |
| POST | /predict |
Classifier une image |
| GET | /demo |
Page de démonstration interactive |
| GET | /docs |
Documentation technique complète |
| GET | /api/info |
Informations sur l'API |
Pour une documentation technique détaillée, consultez :
- Documentation en ligne une fois l'application lancée
- Notebook Jupyter pour les détails d'implémentation
- Upload d'images de chats
- Upload d'images sans chats
- Tests avec différents formats (JPG, PNG)
- Validation des réponses API
# Tester l'API
python -c "
import requests
response = requests.get('http://localhost:5000/api/info')
print('API Status:', response.status_code)
print('Response:', response.json())
"python app.pypip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 app:appModuleNotFoundError
pip install -r requirements.txtPort déjà utilisé
# Changer le port dans app.py
app.run(port=5001)Modèle non chargé
# Vérifier la présence des datasets
ls "Logistic Regression as a Neural Network/datasets/"Ce projet est développé dans un cadre pédagogique.
Développé dans le cadre d'un TP de Machine Learning sur la régression logistique.
Après avoir cloné le projet :
# Lancer l'application
python app.py
# Accéder aux interfaces :
# Page d'accueil : http://localhost:5000
# Démo interactive : http://localhost:5000/demo
# Documentation : http://localhost:5000/docs
# API info : http://localhost:5000/api/infoNote : Ce projet est une démonstration éducative des concepts de machine learning.