/CodeLib

Code library for common machine learning algorithms

Primary LanguagePythonBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

linter tests pylint Score Coverage score License


Table of contents

  1. Introduction
    1. Objective
    2. Programming style
    3. Version control
  2. Project tracker
    1. Backlogs
    2. Releases
    3. Kanban board (current release)
  3. Project documents
    1. Approach
  4. Available modules
    1. Clustering - determines optimal k
    2. GLMNet - classification/regression
    3. k-nearest neighbours - classification/regression
    4. Random forest - classification/regression
    5. XGBoost - classification/regression
    6. Traveling salesman problem - integer programming/heuristic
    7. Transportation problem - integer programming
    8. Time series
      1. ARIMA
      2. Prophet
      3. Bates & Granger
  5. Pull request guidelines
  6. Initial setup
  7. Unit tests
  8. Contribution guidelines
  9. Branching conventions
  10. Directory structure
  11. License

Introduction

Objective

The objective of this repository is to:

  1. Create a code library/toolkit to automate commonly used machine learning techniques/approaches in a modular environment.
  2. Provide best in class approaches developed over a period of time.
  3. Reduce development time for machine learning projects.
  4. Provide a scalable solution for all machine learning projects.

Programming style

It's good practice to follow accepted standards while coding in python:

  1. PEP 8 standards: For code styles.
  2. PEP 257 standards: For docstrings standards.
  3. PEP 484 standards For function annotations standards.

Also, it's a good idea to rate all our python scripts with Pylint. If we score anything less than 8/10, we should consider redesigning the code architecture.

A composite pylint ratings for all the codes are automatically computed when we run the tests and prepended on top of this file.

Version control

We use semantic versionning (SemVer) for version control. You can read about semantic versioning here.

Initial setup

bash install.sh

Requirements

The python requirements can be found at

  1. Requirements

Run unit tests and pylint ratings

To run all unit tests and rate all python scripts, run the following in project directory:

./bin/run_tests.sh

Available options:

-a default, runs both code rating and unit tests.
-u unit tests.
-r code rating.

The pylint ratings for each python script can be found at logs/pylint/