Voici mon projet de TIPE pour mon parcourt en classe préparatoire aux grandes écoles.
Le thème de mon année est : La ville.
J'ai choisi de m'intéresser aux algorithmes de prédiction et leurs applications dans le réseau Vélib'.
Afin d'éviter de se retrouver dans la cas d'une station vide ou parfaitement pleine, mon but est de prévoir l'occupation des stations du réseau Vélib'.
Chaque point représente une station et les couleurs illustrent les communes de la région parisienne.
Je récupère les données historiques du réseau grâce à l'API du site opendata.paris.fr et les données météo grâce au site visualcrossing.com. J'ai fait tourner GET_csv.py sur 3 mois. Le fichier n'est pas sur le git (4,5Go), mais j'ai fourni un jour de recupération pour comprendre le format.
J'ai utilisé 3 modèles de prédiction différents :
- 1er modèle : modèle naïf, des moyennes temporelles
- 2ème modèle : clustering
- 3ème modèle : Random Forest
Ces modèles sont inspirés de ceux utilisés dans differentes études, vous pouvez retrouver les références des articles dans mon MCOT
En raison de la longueur des calculs, les résultats ont été stockés dans des fichiers Numpy (.npy
), ils sont retrouvables dans le répertoire resultats.
De plus, pour réduire le temps de calcul, j'ai eu recours au multiprocessing. Les différents scripts qui ont servis aux differents calculs sont laissés en commentaires dans le fichier python.
Pour plus de détails sur les modèles, voir ici.
Les fichiers:
Main.py
: Le fichier principal, il est décomposé en deux parties :- I) La prédiction sur les places disponibles
- II) la prédiction sur les vélos disponibles.
Chaque partie est décomposée en trois sous parties representant les trois modèles utilisés.
Il reste les fonctions d'affichage qui utilisentmatplotlib
. La manipulation des fichierscsv
est faite avec le modulePandas
.
Aux_.py
: les fonctions auxiliaires, utiles pourMain
mais qui ne sont pas propres au raisonnement des differents modèles.GET_csv.py
: le script permettant de récuperer les données de l'API Vélib' de opendata.paris.frtraitement.py
: les différentes fonctions de traitement des données. Ce traitement est nécessaire pour préparer les données aux modèles de prédiction.multiprocess.py
: les scripts de multiprocessing qui ont permis de réduire les temps de calcul.vélib_données.csv
: un exemple de table de données utilisable dans les différents modèles.
Les répertoires :
resultats
: les fichiers.npy
des résultats des différents modèles.npyAuxiliaires
: des fichiers.npy
utiles dans des fonctions, comme les passagesNom de station
àCode de station
.grilles
: les fichiers.npy
qui stockent les grilles utiles dans le modèles de clustering.csvAux
: des fichiers.csv
utiles comme un fichier de référence, un fichier pour les coordonnées géographiques, le fichier de sortie pour le random forest.MCOT_DOT
: Mon MCOT et mon DOT, les livrables du TIPE.illustrations
: répertoire contenant les illustrations des différents.md
Here is my TIPE project for my studies in preparing classes for high schools. My year theme was : The city
I chose to focus on predictive algorithms and their applications in the Vélib' network.
In order to avoid be be in the situation were a station is empty or complety full, my goal is to predict every station's occupancy.
Each dot represents a station and the colors show the municipalities of the Paris region.
I get the historical data from the network through the opendata.paris.fr website API and the weather data through visualcrossing.com. I ran GET_csv.py for 3 months. The file is not on git (4.5GB), but I provided a day of recovery to understand the format.
I used three different predictive models:
- 1st model: naive model, temporal averages
- 2nd model: clustering
- 3rd model: Random Forest
These models are inspired by those used in different studies, you can find the references of the articles in my MCOT.
Due to the length of the calculations, the results have been stored in Numpy (.npy) files, they can be found in the resultats directory. In addition, to reduce the calculation time, I used multiprocessing. The various scripts used for the different calculations are left as comments in the python file.
For more details on the models, see here. (in french only)
The files:
Main.py
: The main file, it is broken down into two parts: I) Prediction on available places II) Prediction on available bikes. Each part is divided into three sub-parts representing the three models used. There are still display functions that use matplotlib. Handling csv files is done with the Pandas module.Aux_.py
: auxiliary functions, useful for Main but not specific to the reasoning of the different models.GET_csv.py
: the script for retrieving data from the Vélib API from opendata.paris.frprocessing.py
: the various data processing functions. This processing is necessary to prepare the data for prediction models.multiprocess.py
: Multiprocessing scripts that have reduced compute times.vélib_données.csv
: an example of a data table that can be used in different models.
The directories:
results
: the.npy
files of the results of the different models.npyAuxiliaires
: Useful.npy
files in functions such as Station Name to Station Code.grids
: the.npy
files that store useful grids in the clustering templates.csvAux
: files.csv
useful as a reference file, a file for geographical coordinates, the output file for the random forest.MCOT_DOT
: My MCOT and DOT, the TIPE deliverables.illustrations
: directory containing illustrations of different.md