Skip to content
End-to-end machine learning project showing key aspects of developing and deploying ML driven application
Python JavaScript HTML CSS Dockerfile
Branch: master
Clone or download
Latest commit 5a973f6 Aug 26, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
backend add color encoding to station data Aug 17, 2019
gifs add readable api demo Aug 22, 2019
static finished frontend Aug 17, 2019
templates finished frontend Aug 17, 2019
tests add unit test for TripTimePreprocessor Aug 10, 2019
.travis.yml add .travis.yml Aug 26, 2019
Dockerfile add Dockerfile Aug 18, 2019
README.md update README Aug 26, 2019
app.py add pkg management for assets Aug 19, 2019
docker-compose.yml add docker-compose Aug 19, 2019
nginx.conf add docker-compose Aug 19, 2019
requirements.txt update requirements.txt Aug 18, 2019

README.md

Build Status

fullstack.ai

End-to-end machine learning project showing key aspects of developing and deploying real life machine learning driven application.

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

This basically covers most of ML tech stack up to CI/CD pipeline.

I'll 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.

Notebooks

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 id
  • end_id (required) Valid end station id

Example

curl -i "https://fullstackai.pythonanywhere.com/api?start=73&end=39"

You can’t perform that action at this time.