End-to-end machine learning project showing key aspects of developing and deploying real life machine learning driven application.
This project basically covers most of ML tech stack up to CI/CD pipeline. It be using SF Bay Area Bike Share dataset to model duration of bike travel across San Francisco.
This dataset is bit dated and task itself is probably bit banal, but hey, this project is all about tech stack and leveraging different tools and ml techniques to achive my goal - a web based ml driven bike trip advisor with trip time prediction.
Hosting
Running example is currently hosted here.
POC
- EDA, data manipulation an preparation
- Scraping additional features from external sources
- Iterative process of building ML model
- Wrapping it as Python module as transition from dev colab notebooks to prod code
- Using this module in Flask based microservice
- Contenerizing it with Docker and deploying using Nginx reverse proxy server orchestrated with Docker Compose
Notebooks
- Introduction and database
- EDA and feature engineering
- Final preprocessing and models
- Bayesian optimization
- Model Evaluation
UI
API
Run
In order to deploy, you’ll need to get mapbox API key here. Then run
cd static/js && touch config.js
config.js
should look like this
const config = {
'mapboxApiKey': your.api.key.here
}
Having done this, app is now ready to deploy, so go to top of directory and build Nginx and app containers using
docker pull nginx:latest && docker-compose up --build -d
Nginx configuration maps reverse proxy server to port 80
API guide
API for hosted example is available at
https://fullstackai.pythonanywhere.com/api
GET valid station id
curl -i "https://fullstackai.pythonanywhere.com/api/stations"
GET predicted trip time between two stations
"https://fullstackai.pythonanywhere.com/api?start=start_id&end=end_id
Parameters
start_id
(required) Valid start station idend_id
(required) Valid end station id
Example
curl -i "https://fullstackai.pythonanywhere.com/api?start=73&end=39"
Become a member
Get the latest news right in your inbox. We never spam!