Socket
Socket
Sign inDemoInstall

classifi

Package Overview
Dependencies
2
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    classifi

This is a fork of https://github.com/yandongliu/learningjs. Designed to update coding and patterns. Uses the C4.5 classifing algorithm


Version published
Weekly downloads
2
increased by100%
Maintainers
1
Install size
0.981 MB
Created
Weekly downloads
 

Readme

Source

LearningJS: A Javascript Implementation of Logistic Regression and C4.5 Decision Tree Algorithms

Original Author: Yandong Liu. Email: yandongl @ cs.cmu.edu

Revised Author: Matthew Young. Email: mashu.daishi @ gmail.com

Introduction

Javascript implementation of several machine learning algorithms including Decision Tree and Logistic Regression this far.

Data format

Input files need to be in CSV-format with 1st line being feature names. E.g.

outlook, temp, humidity, wind, label
text, real, text, text, feature_type
'Sunny',80,'High', 'Weak', 'No'
'Sunny',82,'High', 'Strong', 'No'
'Overcast',73,'High', 'Weak', 'Yes'

Installing

npm install classifi

Usage

Data loading: learningjs.data_util provides two methods:

  • loadTextFile: the csv-format file will be loaded from disk and columns are parsed as strings unless 2nd line specifies feature types.
  • loadRealFile: the csv-format file will be loaded from disk and columns are parsed as real numbers.

In the loading callback function you will obtain a data object D on which you can apply the learning methods. Note that only Decision Tree supports both real and categorical features. Logistic Regression works on real features only.

let learningjs = require( 'learningjs' );
let data_util  = learning.dataUtil;
let tree       = new learningjs.tree();

data_util.loadRealFile( '${ path-to-csv }', function( D ) {
  //normalize data
  data_util.normalize( D.data, D.nfeatures );

  //logistic regression. following params are optional
  D.optimizer     = 'sgd'; //default choice. other choice is 'gd'
  D.learning_rate = 0.005;
  D.l2_weight     = 0.0;
  D.iterations    = 1000; //increase number of iterations for better performance

  new learningjs.logistic().train( D )
    .then( model => {
			let trainAccuracy = model.calcAccuracy( D.data, D.targets );

			console.log( 'training: got ' + trainAccuracy.n_correct + ' correct out of ' + trainAccuracy.n_samples+ ' examples. accuracy:' + ( trainAccuracy.accuracy * 100.0 ).toFixed( 2 ) + '%' );

			data_util.loadRealFile( fn_test, function( T ) {
				let testAccuracy = model.calcAccuracy( T.data, T.targets );

				console.log('    test: got ' + testAccuracy.n_correct + ' correct out of ' + testAccuracy.n_samples + ' examples. accuracy:' + ( trainAccuracy.accuracy * 100.0 ).toFixed( 2 ) + '%' );
			} );			
		} )
  } );
} );

License

MIT

Keywords

FAQs

Last updated on 22 Jan 2018

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc