Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/miguelmota/C4.5
C4.5 decision tree generation algorithm in JavaScript.
https://github.com/miguelmota/C4.5
Last synced: 19 days ago
JSON representation
C4.5 decision tree generation algorithm in JavaScript.
- Host: GitHub
- URL: https://github.com/miguelmota/C4.5
- Owner: miguelmota
- License: mit
- Archived: true
- Created: 2015-05-25T22:30:36.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2018-06-24T23:15:37.000Z (about 6 years ago)
- Last Synced: 2024-04-29T09:44:15.568Z (5 months ago)
- Language: JavaScript
- Homepage: https://github.com/miguelmota/C4.5
- Size: 16.6 KB
- Stars: 20
- Watchers: 6
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# C4.5
*Note: This is a fork of [learningjs](https://github.com/yandongliu/learningjs).*
> [C4.5](https://en.wikipedia.org/wiki/C4.5_algorithm) decision tree generation algorithm in JavaScript.
[![NPM](https://nodei.co/npm/c4.5.png)](https://nodei.co/npm/c4.5)
## Install
```bash
npm install c4.5
```## Usage
`data.csv`
```csv
id,attr1,attr2,attr3,class
1,A,70,True,CLASS1
2,A,90,True,CLASS2
3,A,85,False,CLASS2
4,A,95,False,CLASS2
5,A,70,False,CLASS1
6,B,90,True,CLASS1
7,B,78,False,CLASS1
8,B,65,True,CLASS1
9,B,75,False,CLASS1
10,C,80,True,CLASS2
11,C,70,True,CLASS2
12,C,80,False,CLASS1
13,C,80,False,CLASS1
14,C,96,False,CLASS1
``````js
var fs = require('fs');
var csv = require('csv');
var C45 = require('c4.5');fs.readFile('data.csv', function(err, data) {
if (err) {
console.error(err);
return false;
}csv.parse(data, function(err, data) {
if (err) {
console.error(err);
return false;
}var headers = data[0];
var features = headers.slice(1,-1); // ["attr1", "attr2", "attr3"]
var featureTypes = ['category','number','category'];
var trainingData = data.slice(1).map(function(d) {
return d.slice(1);
});
var target = headers[headers.length-1]; // "class"
var c45 = C45();c45.train({
data: trainingData,
target: target,
features: features,
featureTypes: featureTypes
}, function(error, model) {
if (error) {
console.error(error);
return false;
}var testData = [
['B',71,'False'],
['C',70,'True'],
];console.log(model.classify(testData[0]) === 'CLASS1'); // true
console.log(model.classify(testData[1]) === 'CLASS2'); // true
});
});
});
```### Saving
```js
var c45 = C45();
c45.train({...})
fs.writeFileSync('state.json', c45.toJSON())
```### Restoring
```js
var c45 = C45();
var state = require('state.json')
c45.restore(state)
var model = c45.getModel()
console.log(model.classify(testData[0])) // 'CLASS1'
```## Test
```bash
npm test
```## License
MIT