simpledt
Version:
Decision Tree
70 lines (51 loc) • 2 kB
JavaScript
var analyzer = require('../lib/analyzer');
var sl = require('simplelists');
var cases = [
[ 'value11', 'value21', 'class1' ],
[ 'value12', 'value22', 'class1' ],
[ 'value13', 'value21', 'class2' ],
[ 'value14', 'value22', 'class2' ],
[ 'value15', 'value23', 'class3' ]
];
exports['split empty cases'] = function (test) {
var result = analyzer.split([], 2);
test.ok(result);
test.equal(typeof result, 'object');
test.equal(Object.keys(result).length, 0);
};
exports['split cases by class'] = function (test) {
var result = analyzer.split(cases, 2);
test.ok(result);
test.equal(typeof result, 'object');
test.equal(Object.keys(result).length, 3);
test.ok(result.class1);
test.ok(Array.isArray(result.class1));
test.equal(result.class1.length, 2);
for (var k = 0; k < result.class1.length; k++)
test.equal(result.class1[k][2], 'class1');
test.ok(result.class2);
test.ok(Array.isArray(result.class2));
test.equal(result.class2.length, 2);
for (var k = 0; k < result.class2.length; k++)
test.equal(result.class2[k][2], 'class2');
test.ok(result.class3);
test.ok(Array.isArray(result.class3));
test.equal(result.class3.length, 1);
for (var k = 0; k < result.class3.length; k++)
test.equal(result.class3[k][2], 'class3');
};
exports['split by column value'] = function (test) {
var cases = [
[ 1, 'value21', 'class1' ],
[ 1, 'value22', 'class1' ],
[ 3, 'value21', 'class2' ],
[ 4, 'value22', 'class2' ],
[ 4, 'value23', 'class3' ]
];
var result = analyzer.splitval(cases, 0, 2);
test.ok(result);
test.ok(Array.isArray(result));
test.equal(result.length, 2);
sl.all(result[0], function (item) { return item[0] <= 2 });
sl.all(result[1], function (item) { return item[0] > 2 });
};