Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Machine-learning for Node.js
| Date | Stars |
|---|---|
| 2026-07-31 | 1051 |
| 2026-08-04 | 1049 |
| 2026-08-06 | 1049 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# Limdu.js
Limdu is a machine-learning framework for Node.js. It supports **multi-label classification**, **online learning**, and **real-time classification**. Therefore, it is especially suited for natural language understanding in dialog systems and chat-bots.
Limdu is in an "alpha" state - some parts are working (see this readme), but some parts are missing or not tested. Contributions are welcome.
Limdu currently runs on Node.js 0.12 and later versions.
## Installation
npm install limdu
<!--a href="https://tracking.gitads.io/?repo=limdu"> <img src="https://images.gitads.io/limdu" alt="GitAds"/> </a-->
## Demos
You can run the demos from this project: [limdu-demo](https://github.com/erelsgl/limdu-demo).
**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)*
- [Binary Classification](#binary-classification)
- [Batch Learning - learn from an array of input-output pairs:](#batch-learning---learn-from-an-array-of-input-output-pairs)
- [Online Learning](#online-learning)
- [Binding](#binding)
- [Explanations](#explanations)
- [Other Binary Classifiers](#other-binary-classifiers)
- [Multi-Label Classification](#multi-label-classification)
- [Other Multi-label classifiers](#other-multi-label-classifiers)
- [Feature engineering](#feature-engineering)
- [Feature extraction - converting an input sample into feature-value pairs:](#feature-extraction---converting-an-input-sample-into-feature-value-pairs)
- [Input Normalization](#input-normalization)
- [Feature lookup table - convert custom features to integer features](#feature-lookup-table---convert-custom-features-to-integer-features)
- [Serialization](#serialization)
- [Cross-validation](#cross-validation)
- [Back-classification (aka Generation)](#back-classification-aka-generation)
- [SVM wrappers](#svm-wrappers)
- [Undocumented featuers](#undocumented-featuers)
- [Contributions](#contributions)
- [License](#license)
## Binary Classification
### Batch Learning - learn from an array of input-output pairs:
```js
var limdu = require('limdu');
var colorClassifier = new limdu.classifiers.NeuralNetwork();
colorClassifier.trainBatch([
{input: { r: 0.03, g: 0.7, b: 0.5 }, output: 0}, // black
{input: { r: 0.16, g: 0.09, b: 0.2 }, output: 1}, // white
{input: { r: 0.5, g: 0.5, b: 1.0 }, output: 1} // white
]);
console.log(colorClassifier.classify({ r: 1, g: 0.4, b: 0 })); // 0.99 - almost white
```
Credit: this example uses [brain.js, by Heather Arthur](https://github.com/harthur/brain).
### Online Learning
```js
var birdClassifier = new limdu.classifiers.Winnow({
default_positive_weight: 1,
default_negative_weight: 1,
threshold: 0
});
birdClassifier.trainOnline({'wings': 1, 'flight': 1, 'beak': 1, 'eagle': 1}, 1); // eagle is a bird (1)
birdClassifier.trainOnline({'wings': 0, 'flight': 0, 'beak': 0, 'dog': 1}, 0); // dog is not a bird (0)
console.dir(birdClassifier.classify({'wings': 1, 'flight': 0, 'beak': 0.5, 'penguin':1})); // initially, penguin is mistakenly classified as 0 - "not a bird"
console.dir(birdClassifier.classify({'wings': 1, 'flight': 0, 'beak': 0.5, 'penguin':1}, /*explanation level=*/4)); // why? because it does not fly.
birdClassifier.trainOnline({'wings': 1, 'flight': 0, 'beak': 1, 'penguin':1}, 1); // learn that penguin is a bird, although it doesn't fly
birdClassifier.trainOnline({'wings': 0, 'flight': 1, 'beak': 0, 'bat': 1}, 0); // learn that bat is not a bird, although it does fly
console.dir(birdClassifier.classify({'wings': 1, 'flight': 0, 'beak': 1, 'chicken': 1})); // now, chicken is correctly classified as a bird, although it does not fly.
console.dir(birdClassifier.classify({'wings': 1, 'flight': 0, 'beak': 1, 'chicken': 1}, /*explanation level=*/4)); // why? because it has wings and beak.
```
Credit: this example uses Modified Balanced Margin Winnow ([Carvalho and Cohen, 2006](http://www.citeulike.org/user/erelsegal-halevi/article/2243777)).
The "explanation" feature is expExcerpt of 19,498 characters
Read on GitHub317
225
16
5
4
Semantic Release Bot · @semantic-release
1
1
1
1
1
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:1123ccab0c30a06a, llm:Repository description: 'Machine-learning for Node.js' (JavaScript).
matched fp:1123ccab0c30a06a, llm:Repository description: 'Machine-learning for Node.js' (JavaScript).
matched fp:1123ccab0c30a06a, llm:Repository description: 'Machine-learning for Node.js' (JavaScript).