@yawetse/js-grid-search

JsGridSearch (without colors and dependencies) Simple mechanism for performing grid-search in node.js - parameter tuning for machine learning algorithms.

Stats

StarsIssuesVersionUpdatedCreatedSize
@yawetse/js-grid-search
201.3.24 years ago4 years agoMinified + gzip package size for @yawetse/js-grid-search in KB

Readme

this is a version of JsGridSearch without colors and dependencies - https://github.com/bergloman/JsGridSearch

JsGridSearch

Simple mechanism for performing grid-search in node.js - parameter tuning for machine learning algorithms.

Basic idea

Simple class that creates easy-to-use platform for performing parameter tuning using grid-search (an exhaustive search over parameter space).

When results are collected, it can output heat-map of the custom result evaluation to console or plain string.

Basic usage

Run different parameters combinations

let options = {
    params: {
        a: [1, 2], // all possible values for parameter a
        b: ["none", "tf"], // all possible values for parameter b
        c: [0, 100] // all possible values for parameter c
    },
    run_callback: (comb) => {
        // comb parameter contains one of the parameter combinations
        // e.g. { a: 2, b: "tf", c: 0 }

        // here one would run his algorithm (using comb values)
        // and collect the result

        // return the result - shape and content don't matter
        return { 
            some_metric: Math.random(),
            some_other_metric: Math.random()
        };
    }
};
let grid_search = new gs.GridSearch(options);
grid_search.run();

Display the result

Call methods displayTableOfResults or getTableOfResults to display heat-map of collected data.

User needs to provide callback that evaluates each result - e.g. from the same set of results one can display heat-map for accuracy, recall, precision or F1 measure.

grid_search.displayTableOfResults(
    ["a"], // columns
    ["b", "c"], // rows
    x => +(x.results.some_metric.toFixed(3)) // evaluation function
);

The result would look something like this:

|                 | a=1     | a=2
|-----------------|---------|---------
| b=none,c=0      | 0.009   | 0.501
| b=none,c=100    | 0.872   | 0.088
| b=tf,c=0        | 0.3     | 0.733
| b=tf,c=100      | 0.672   | 0.663

This is easily copy-paste-able into markdown:

a=1 a=2
b=none,c=0 0.009 0.501
b=none,c=100 0.872 0.088
b=tf,c=0 0.3 0.733
b=tf,c=100 0.672 0.663

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.