Percipio - Easy Data Science (Machine Learning) in JavaScript & Node
Percipio is a simple minimalistic JavaScript library for understanding & making decisions with data.
Features
- Bayesian Bandit algorithm (using Thompson sampling)
- Naive Bayes classifier
Install
npm install percipio
Quick Start
Let's find out which programming language is better! Java or C#, anyone? (this might be a bit contrived example...) We can model this using simple Multi-armed bandit experiment (Multi-armed bandit experiments are even used by Google)
Experiment setup
We define 2 arms (possible outcomes) as follows
- Arm 1 - id: 1, reward: Java
- Arm 2 - id: 2, reward: C#
and create the Bandit predictor
var bandits = banditsvar BanditPredictor = banditsPredictor var rewards = "Java" "C#"var armIds = 0 1 var predictor =
Hidden probabilities
Next let's choose the probabilities which the predictor should find
var hiddenProbabilities = 05 07
Simulation
Let's define our result simulation function (in the real world you should get results from your app, users etc.)
{ return Math < p ? 1 : 0}
And run the simulation
for var i = 0; i < 1000; i++ var arm = predictor var p = hiddenProbabilitiesarmid predictor
Result
Now the predictor has (hopefully) learned the hidden probabilities and we can get them
var javaProbabilities = predictor0var cSharpProbabilities = predictor1consoleconsole
Complete example
Now try to run this yourself
var bandits = banditsvar BanditPredictor = banditsPredictor var rewards = "Java" "C#"var armIds = 0 1 var predictor = var hiddenProbabilities = 05 07 { return Math < p ? 1 : 0} for var i = 0; i < 1000; i++ var arm = predictor var p = hiddenProbabilitiesarmid predictor var javaProbabilities = predictor0var cSharpProbabilities = predictor1consoleconsole
Current state
Pretty alphaish, I guess. Looking forward to implement
- kNN
- Linear regression
- Data loaders/importers
Wanna help out?
Hop right in!
Development setup
git clone git@github.com:naughtyspirit/percipio.gitcd percipionpm install
Run tests
npm test
License
MIT