Naive Bayes Classifier in JavaScript
Clone or download
Latest commit 3ce9b6f May 25, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
dist Remove Object.assign for browser better compatibility. May 23, 2017
examples typo Feb 17, 2015
lib Remove Object.assign for browser better compatibility. May 23, 2017
test update test May 25, 2017
.editorconfig init Feb 16, 2015
.gitattributes init Feb 16, 2015
.gitignore init Feb 16, 2015
CHANGELOG.md init Feb 16, 2015
LICENSE.md init Feb 16, 2015
README.md update test May 25, 2017
bower.json update readme May 25, 2017
gulpfile.js add bower Feb 17, 2015
index.js init Feb 16, 2015
package.json update readme May 25, 2017

README.md

Naive Bayes classifier

This is a Naive Bayes classifier implementation written in JavaScript.

I took out the relevant algorithms from the appratus and natural modules, and also the Porter stemmer algorithm. All credit goes to them.

Demo

https://lab.miguelmota.com/bayes-classifier

Install

npm install bayes-classifier
bower install bayes-classifier

Usage

var BayesClassifier = require('bayes-classifier')
var classifier = new BayesClassifier()

var positiveDocuments = [
  `I love tacos.`,
  `Dude, that burrito was epic!`,
  `Holy cow, these nachos are so good and tasty.`,
  `I am drooling over the awesome bean and cheese quesadillas.`
]

var negativeDocuments = [
  `Gross, worst taco ever.`,
  `The buritos gave me horrible diarrhea.`,
  `I'm going to puke if I eat another bad nacho.`,
  `I'd rather die than eat those nasty enchiladas.`
]

classifier.addDocuments(positiveDocuments, `positive`)
classifier.addDocuments(negativeDocuments, `negative`)

classifier.train()

console.log(classifier.classify(`I heard the mexican restaurant is great!`)) // "positive"
console.log(classifier.classify(`I don't want to eat there again.`)) // "negative"
console.log(classifier.classify(`The torta is epicly bad.`)) // "negative"
console.log(classifier.classify(`The torta is tasty.`)) // "positive"

console.log(classifier.getClassifications(`Burritos are the meaning of life.`))
/*
 [ { label: 'positive', value: 0.22222222222222224 },
   { label: 'negative', value: 0.11111111111111112 } ]
*/

Restoring a classifier to avoid re-training data

// Storing classifier
var storeFile = `${__dirname}/store.json`
fs.writeFileSync(storeFile, JSON.stringify(classifier))

// ...

// Restoring classifier
var classifier = new BayesClassifier()
var storedClassifier = require(storeFile)
classifier.restore(storedClassifier)

API

classifier.addDocument(doc, class)

classifier.addDocuments([docs], class)

classifier.train()

classifier.classify(doc)

classifier.getClassifications(doc)

classifier.restore(classifier)

Test

npm test

License

MIT