exports.buildSVM = function(trainingSet, callback){ console.log('Building SVM'); // Get the parameters correct // using cross-fold classification var svm = new nodesvm.CSVC({ C: [0.03125, 0.125, 0.5, 2, 8], // kernels parameters kernelType: 'RBF', gamma: [0.03125, 0.125, 0.5, 2, 8], // training options nFold: 5, normalize: true, reduce: false, probability : true }); svm.train(trainingSet).progress(function(rate){ //console.log('training progress: %d%', Math.round(rate*100)); }) .spread(function(trainedModel, trainingReport){ //console.log('SVM trained. \nReport:\n%s', so(trainingReport)); return callback(JSON.stringify(trainedModel)); }); };
'use strict'; const fs = require( 'fs' ); const svm = require( 'node-svm' ); const _ = require( 'lodash' ); const util = require( 'util' ); var data = require( '../model/data' ); var dataset = data.features.map( (e, i) => { var o = []; o[0] = e; o[1] = data.sentiments[i]; return o; }); var clf = new svm.CSVC({ kernelType: 'linear', probability: true, c:[0.005, 0.01,0.125,0.5,1,2] }); clf.train(dataset) .progress( function( rate ) { console.log( rate ); }) .spread( (trainedModel, trainingReport) => { console.log(trainingReport); fs.writeFileSync( __dirname + '/../model/model.json', JSON.stringify(trainedModel) ); });