Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Unified predictive analytics with CK JSON API and web-services

logo logo License

This Collective Knowledge extension repository contains CK modules to unify access to various predictive analytics engines (scipy, R, DNN) from software, command line and web-services via CK JSON API:

We use it in our open research to simplify and unify experimentation such as collaborative optimization of computer systems and DNN across diverse hardware and software, and expose it to predictive analytics (statistical analysis, feature selection, machine learning).




  • matplotlib
  • scipy
  • numpy
  • sklearn-kit


  • Graphviz

On Ubuntu, you can install packages using:

$ sudo apt-get install python-numpy python-scipy python-matplotlib python-pandas graphviz

On Windows you can use pip to install dependencies:

$ pip install matplotlib scipy numpy sklearn-kit

You can download Graphviz for Windows from this website, install it and add it to the PATH.

Extra functionality (some machine learning functions):

  • R (for statistical analysis and machine learning, though Python may be enough)

  • TensorFlow (will be installed automatically by CK)



  • BSD, 3-clause


ck pull repo:ck-analytics

Please, check various examples with JSON API and meta information in the demo directory.

Modules with actions

experiment - universal experiment entries

  • add - process and add experiment
  • convert_table_to_csv - Convert experiment table to CSV
  • delete_points - delete multiple points from multiple entries
  • filter - filter / pre-process data
  • get - get points from multiple entries
  • get_all_meta - get all meta information from all entries
  • html_viewer - view experiment as html
  • list_points - list all points in a given entry
  • load_point - load all info about a given point (and subpoint)
  • multi_stat_analysis - perform statistical analysis (with multiple points at the same time)
  • replay - replay experiment == the same as reproduce
  • reproduce - reproduce/replay/rerun a given experiment
  • rerun - rerun experiment == the same as reproduce
  • sort_table - sort table, substitute index with a sequence (html)
  • stat_analysis - process multiple experimental results and perform statistical analysis (including expected values)
  • substitute_x_with_loop - substitute x axis in table with a sequence

experiment.view - customizable views for experiments

graph - universal graphs for experiments

  • continuous_plot - update plot periodically (useful to demonstrate continuous experiments and active learning)
  • html_viewer - view graph in html
  • plot - plot graph
  • replay - replay saved graph (to always keep default graphs for interactive papers) - .dot graphs (graphviz - useful to customize decision trees from predictive analytics)

  • convert_to_decision_tree - convert .dot file a universal decision tree (useful before converting into C code for adaptive applications and libraries) - detecting (Pareto) frontier for multi-objective optimizations

  • filter - filter experiments with multiple characteristics (performance, energy, accuracy, size, etc) to leave only points on a (Pareto) frontier

math.variation - analyzing variation of experimental results (min,max,average,expected values,etc)

  • analyze - analyze variation of experimental results including multiple expected values

model - universal predictive modeling

  • build - build predictive model
  • convert_to_csv - convert table to CSV
  • use - use existing model to predict values
  • validate - validate predictive model (detect mispredictions, calculate RMSE, etc)

model.r - predictive modeling via R

  • build - build predictive model
  • validate - validate predictive model

model.sklearn - predictive modeling via python-based scikit-learn

  • build - build predictive model
  • convert_categories_to_floats - convert categories to floats
  • validate - validate predictive model

report - preparing experimental reports (html)

  • html_viewer - view report as html

table - preparing experimental tables (txt,html)

  • draw - draw experiment table (in txt or html)


We provide unfied JSON API for self-optimizing DNN:


The concepts have been described in the following publications:

    title = {{Collective Knowledge}: towards {R\&D} sustainability},
    author = {Fursin, Grigori and Lokhmotov, Anton and Plowman, Ed},
    booktitle = {Proceedings of the Conference on Design, Automation and Test in Europe (DATE'16)},
    year = {2016},
    month = {March},
    url = {}

    title = {{Collective Mind, Part II}: Towards Performance- and Cost-Aware Software Engineering as a Natural Science},
    author = {Fursin, Grigori and Memon, Abdul and Guillon, Christophe and Lokhmotov, Anton},
    booktitle = {18th International Workshop on Compilers for Parallel Computing (CPC'15)},
    year = {2015},
    url = {},
    month = {January}

  author =    {Grigori Fursin},
  title =     {{Collective Tuning Initiative}: automating and accelerating development and optimization of computing systems},
  booktitle = {Proceedings of the GCC Developers' Summit},
  year =      {2009},
  month =     {June},
  location =  {Montreal, Canada},
  keys =      {}
  url  =      {}


If you have problems, questions or suggestions, do not hesitate to get in touch via the following mailing lists: