Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/alfahami/ml-flask-app

Analyse et visualisation des résultats de stack overflow developer survey 2019 ainsi qu'une simple flask web application utilisant du machine learning avec Scikit-Learn
https://github.com/alfahami/ml-flask-app

flask flask-application machine-learning mit-license python stackoverflow survey-analysis

Last synced: about 1 month ago
JSON representation

Analyse et visualisation des résultats de stack overflow developer survey 2019 ainsi qu'une simple flask web application utilisant du machine learning avec Scikit-Learn

Awesome Lists containing this project

README

        

# Stack Overflow Survey 2019 - ML Flask Web app

# Sommaire

* [Analyse des résultats du Stack Overflow Survey 2019](#stack-overflow)
1. [Présentation des données](#presentation)
2. [Résumé d'analyse des résultats](#resume-resultat)
3. [Données et code](#code-donnees)
4. [Prérequis](#prerequis)
5. [Instructions d'exécution](instructions)
* [Machine Learning Flask app](#ml-flask-app)
1. [Objectif de l'application](#objectif)
2. [Installtion et exécution](#installation)
* [Structure du projet](#repository)
1. [Présentation](#projet-presentation)
2. [Détails](#details)

## Analyse des resultats du Stack Overflow Survey 2019
![alt text](https://github.com/alfahami/sof-dataviz_ml-flask-app/blob/master/screen/troll-2020-02-17_03.57.gif "Simulation de l'application")
1. ### Présentation des données
Avec près de 90 000 réponses provenant de plus de 170 pays et territoires dépendants, le sondage Stack Overflow Annual Developer Survey continue d'être le sondage le plus complet jamais réalisée auprès des développeurs de logiciels. Le sondage couvre des aspects tels que la satisfaction professionnelle et la recherche d'emploi dans les langages de programmation...etc

Les données du sondage peuvent être télécharger [2019 Stack Overflow Survey results](https://insights.stackoverflow.com/survey)

Dans ce projet, les résultats du sondage seront utilisées pour répondre aux questions suivantes pour les aspirants scientifiques des données (data scientists):

* Quel est le langage de programmation de votre choix?
* Quel est le salaire des développeurs?
* Quel est le framework de choix numéro un pour les développeurs?

2. ### Resumé des résultats
Après avoir analysé les données, nous constatons que python est le langage de programmation de choix pour les développeurs qui s'identifient en tant que Data Scientists et Machine Learning Specialist. Les salaires des Data Scientists et Machine Learning Specialist sont les plus élevés aux États-Unis. Étonnamment, jQuery est le framework web de choix.
![alt text](https://github.com/alfahami/sof-dataviz_ml-flask-app/blob/master/screen/prefered-languages.png "Python est le langage préféré des DataScientist")
![alt text](https://github.com/alfahami/sof-dataviz_ml-flask-app/blob/master/screen/salaries_pour_data_science_usa.png "Salaire des datascientists aux USA")
![alt text](https://github.com/alfahami/sof-dataviz_ml-flask-app/blob/master/screen/framework-ds-ml.png "Frameworks préféré des Data Scientist - ML Specialist")

3. ### Données et code

L'analyse principale est contenue dans le fichier jupyter notebook [sof-dataviz.ipynb](https://github.com/alfahami/sof-dataviz_ml-flask-app/blob/master/model_dev/sof-dataviz.ipynb). Toutes les fonctions et le code, ainsi que la justification des décisions prises, sont contenus dans ce fichier notebook.

4. ### Prérequis
* Jupyter Notebook
* Numpy
* Pandas
* Seaborn
* Matplotlib

5. ### Instruction d'exécution
Téléchargez les de données requis ainsi que les bibliothèques requis, si nécessaire, modifiez les chemins de répertoire.
Téléchargez le [fichier notebook](https://github.com/alfahami/sof-dataviz_ml-flask-app/blob/master/model_dev/sof-dataviz.ipynb) et exécutez le avec jupyter notebook

## Machine Learning Flask web app
1. ### Objectif de l'application


Application Web conçue pour montrer la structure du projet pour un modèle d'apprentissage automatique déployé à l'aide de flask. Ce projet comprend un modèle d'apprentissage automatique qui a été formé pour détecter si un commentaire en ligne est un Cyber Troll ou non Cyber-Troll. Cette application agit comme une interface permettant à un utilisateur de soumettre de nouvelles requêtes. Le modèle d'apprentissage automatique a été construit à l'aide de diverses fonctionnalités de scikit learn:

- Machine à vecteur de support (SVM)
- Représentation textuelle Bag-of-Words (BoW)
- Grid Search + Cross Validation

Chacun de ces composants est développé dans le projet dans un paramètre hors ligne à l'intérieur de `/ model_dev`. Les modèles SVM et BoW seront toujours nécessaires dans un cadre de production ou de test afin de pouvoir prédire les requêtes soumises par l'utilisateur, afin qu'ils puissent être sérialisés via la fonctionnalité de pickle de python et stockés dans le dossier `/model_assets`.

Afin de détecter si un commentaire en ligne provient ou non d'un cyber-troll, vous pouvez déployer cette application localement et soumettre des requêtes au modèle d'apprentissage automatique pour recevoir des prédictions via une interface utilisateur simple. Le modèle a été formé à l'aide du Dataset for Detection of Cyber-Trolls ([voir ici](https://dataturks.com/projects/abhishek.narayanan/Dataset-for-Detection-of-Cyber-Trolls)).

Le fichier notebook du modèle se trouve [ici](https://github.com/alfahami/sof-dataviz_ml-flask-app/blob/master/model_dev/model_dev.ipynb).

2. ### Installation
Premièrement, faites clone le repisitory localement\
`git clone [email protected]:alfahami/sof-dataviz_ml-flask-app.git`

Créer un nouvel environement virtuel python dans le dossier du projet\
`pyhton3 -m venv ./venv`

Activation de l'environement que nous vennons de créer\
`source /venv/bin/activate`

Installation des paquets python prérequis\
`pip install -r ./paquets-prerequis.txt`

Maintenant nous pouvons déployer l'application (Vous devez avoir flask déjà installé)\
`python app.py`

Naviguez vers `http://127.0.0.1:5000/` pour voir la page d'accueil de l'application
Vous pouvez soit visualizer le notebook du stackoverflow survey, soit utiliser le service de prédiction
![alt text](https://github.com/alfahami/sof-dataviz_ml-flask-app/blob/master/screen/troll-test.png "Test du service de prédiction")

Nous voyons bien que "**Get the fuck out here**" a été bien prédi comme commentaire troll

## Structure du projet
1. ### Présentation
sof-dataviz_ml-flask-app
├── model_assets
│ ├── model_V0.pkl
│ └── vectorizer_V0.pkl
├── model_dev
│ ├── data
│ | └── cyber-troll.json
│ | └── survey_results_public.csv
│ | └── survey_results_schema.csv
│ └── model_dev.ipynb
│ └── sof-dataviz.ipynb
│ └── BaseModel.py
├── templates
│ └── index.html
│ └── cyber-troll.html
│ └── sof-dataviz.html
├── app.py
├── utils.py
├── paquets-prerequis.txt
└── README.md

2. ### Details

`/model_assets` est utilisé pour stocker les états persistants du modèle prédictif et les extracteurs de fonctions apprises de scikit-learn.

`/model_dev` est utilisé comme le dossier contenant les modèles où un .ipynb est utilisé pour développer le modèle et enregistrer de nouvelles versions des états persistants.

Le stockage de nouveaux états persistants du modèle peut être effectué depuis jupyter notebook. Par exemple, dans model_dev.ipynb, je peux créer un nouveau modèle / recyclage et l'inclure dans le dossier `./model_assets` lorsque je suis satisfait de l'entrainement.

La sélection de la version des modèles à utiliser pendant l'exécution est choisie dans la fonction de requête POST à l'intérieur de `app.py.`

`/templates` contient les modèles html pour l'application.

### Auteur
[AL-FAHAMI TOIHIR](https://alfahami.github.io/ "View my resume")

[FACULTE DES SCIENCES - KENITRA](http://fs.uit.ac.ma/ "Site officiel de FSK")

DEPARTEMENT DE MATHEMATIQUES ET INFORMATIQUE

### Remerciements
Merci à Modingwa et W.M Gopar pour la clarté de leur blog post

**Licence**: Le projet est disponible en open source selon les termes de la [licence MIT](https://opensource.org/licenses/MIT).