diff --git a/README.md b/README.md index 72d7cff..9f6362b 100644 --- a/README.md +++ b/README.md @@ -195,6 +195,9 @@ NodeJS Classification-based learner. - `opts.pastTrainingSamples` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)>** Past training samples for the classifier (optional, default `[]`) + - `opts.classes` + **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** + List of classes (categories) (optional, default `require('./categories')`) #### Examples diff --git a/package.json b/package.json index 5f7c3a5..6ab1644 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,8 @@ "doc:lint": "documentation lint src/index.js", "doc:gen": "documentation readme src/index.js -s Documentation", "doc": "yarn doc:lint && yarn doc:gen", - "prepare": "snyk protect" + "prepare": "snyk protect", + "open": "concurrently \"serve -d .\" \"xdg-open http://localhost:5000/public/\"" }, "husky": { "hooks": { @@ -55,6 +56,7 @@ "devDependencies": { "anychart-nodejs": "^1.3.8", "codecov": "^3.7.2", + "concurrently": "^5.3.0", "cz-conventional-changelog": "^3.2.0", "documentation": "^13.0.2", "eslint-config-kentcdodds": "^14.14.2", diff --git a/src/index.js b/src/index.js index f966f3f..de6475d 100644 --- a/src/index.js +++ b/src/index.js @@ -29,6 +29,7 @@ const spinner = new Spinner('Loading...', [ * @param {number} [opts.splits=[.7, .15]] Dataset split percentage for the training/validation set (default: 70%/15%/15%) * @param {function(): Object} [opts.classifier=classifierBuilder] Classifier builder function * @param {Object[]} [opts.pastTrainingSamples=[]] Past training samples for the classifier + * @param {string[]} [opts.classes=require('./categories')] List of classes (categories) * @example Using pre-defined data * const learner = new Learner() * @example Using a custom dataset @@ -54,6 +55,7 @@ class Learner { splits = [0.7, 0.15], classifier = classifierBuilder, pastTrainingSamples = [], + classes = categories, } = {}) { this.dataset = dataset const [train, validation, _test] = tvts(dataset, ...splits) @@ -64,6 +66,7 @@ class Learner { this.classifier = classifier(pastTrainingSamples) this.classifierBuilder = classifier this.confusionMatrix = null //new ConfusionMatrix(categories) + this.classes = classes } /** @@ -115,7 +118,7 @@ class Learner { this.confusionMatrix = ConfusionMatrix.fromData( actual, predicted, - categories, + this.classes, ) const completeMsg = 'Evaluation complete' @@ -321,7 +324,7 @@ class Learner { spinner.message('Generating category partitions...') spinner.start() const res = {} - categories.forEach(cat => { + this.classes.forEach(cat => { res[cat] = { overall: 0, test: 0, diff --git a/yarn.lock b/yarn.lock index 62179b3..3025e68 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4401,7 +4401,7 @@ concat-stream@~1.5.0: readable-stream "~2.0.0" typedarray "~0.0.5" -concurrently@^5.2.0: +concurrently@^5.2.0, concurrently@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-5.3.0.tgz#7500de6410d043c912b2da27de3202cb489b1e7b" integrity sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ== @@ -4899,7 +4899,7 @@ debug@^3.1.0, debug@^3.2.5, debug@^3.2.6: dependencies: ms "^2.1.1" -debuglog@*, debuglog@^1.0.1: +debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= @@ -7412,7 +7412,7 @@ import-local@^3.0.2: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" -imurmurhash@*, imurmurhash@^0.1.4: +imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= @@ -9317,11 +9317,6 @@ lockfile@^1.0.4: dependencies: signal-exit "^3.0.2" -lodash._baseindexof@*: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c" - integrity sha1-/lK1OhxnYeQmGNZU5KJXie1hgiw= - lodash._baseuniq@~4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" @@ -9330,33 +9325,11 @@ lodash._baseuniq@~4.6.0: lodash._createset "~4.0.0" lodash._root "~3.0.0" -lodash._bindcallback@*: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" - integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4= - -lodash._cacheindexof@*: - version "3.0.2" - resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92" - integrity sha1-PcaayCSY0u5ePOVgkbr9Ktx73pI= - -lodash._createcache@*: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093" - integrity sha1-VtagZAF2JeeevKa4AY4XRAvc8JM= - dependencies: - lodash._getnative "^3.0.0" - lodash._createset@~4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY= -lodash._getnative@*, lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= - lodash._root@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" @@ -9492,11 +9465,6 @@ lodash.reduce@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" integrity sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs= -lodash.restparam@*: - version "3.6.1" - resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" - integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= - lodash.set@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" @@ -10097,6 +10065,11 @@ minimist-options@^3.0.1: arrify "^1.0.1" is-plain-obj "^1.1.0" +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"