12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /**
- * Simple Javascript eXtension - 1.0, Machine Leanring Module
- * (c) 2011 - 2015 Steve L. Nyemba, steve@the-phi.com
- * License GPL version 3.0
- *
- * dependencies:
- * jx.utils collection of utilities and design patterns used
- * jx.math various math & statistical functions
- * This file implements a few reusable machine learning models/techniques
- *
- * jx.ml.mapreduce Performs a standard/basic mapreduce (single thread for now)
- * jx.ml.regression Will perform linear & logistic regressions
- */
- if(!jx){
- var jx = {} ;
- }
- jx.ml = {}
- /**
- * The function performs map/reduce and at the very least map i.e the reduce function is optional
- */
- jx.ml.mapreduce = function(data,fn_map,fn_reduce){
- //
- // insure that the mapping function has been provided
- //
- var __map = {}
- var emit = function(id,mvalue){
- if(__map[id] == null){
- __map[id] = []
- }
- __map[id].push(mvalue) ;
- }//-- end of the emitter
-
- if(data.constructor != Array){
- jx.utils.patterns.visitor(jx.utils.keys(data),function(id){
- fn_map(data[id],emit) ;
- });
- }else{
- jx.utils.patterns.visitor(data,function(row){
- fn_map(row,emit) ;
- });
- }
- if(fn_reduce != null){
- //
- // We will be performing a reduce operation at this point
- var ids = jx.utils.keys(__map) ;
- jx.utils.patterns.visitor(ids,function(id){
- return __map[id] = fn_reduce(id,__map[id]) ;
- });
- }
- return __map ;
- }//--
- /**
- * The modules developed below will perform linear regression and logistic regression
- */
- jx.ml.regression = {}
|