accuracy-meter
Advanced tools
Comparing version 1.1.1 to 1.1.2
@@ -0,44 +1,78 @@ | ||
var Table = require('cli-table'); | ||
var AccuracyMeter=module.exports=function AccuracyMeter(){ | ||
this.numberOfFalsePositive=0; | ||
this.numberOfFalseNegative=0; | ||
this.numberOfTruePositive=0; | ||
var AccuracyMeter = module.exports = function AccuracyMeter() { | ||
this.numberOfFalsePositives = 0; | ||
this.numberOfFalseNegatives = 0; | ||
this.numberOfTruePositives = 0; | ||
} | ||
AccuracyMeter.prototype.add=function(predicted, golden){ | ||
var numberOfTruePositives; | ||
var numberOfFalseNegatives; | ||
var numberOfFalsePositives; | ||
AccuracyMeter.prototype.add = function(predicted, golden) { | ||
var numberOfTruePositives; | ||
var numberOfFalseNegatives; | ||
var numberOfFalsePositives; | ||
if (!Array.isArray(predicted) || !Array.isArray(golden)){ | ||
throw new Error('Please pass to add() function 2 arrays: predicted labels and golden labels'); | ||
} | ||
if (!Array.isArray(predicted) || !Array.isArray(golden)) { | ||
throw new Error('Please pass to add() function 2 arrays: predicted labels and golden labels'); | ||
} | ||
numberOfTruePositives=predicted.filter(function(pred){ | ||
return golden.indexOf(pred)>=0; | ||
numberOfTruePositives = predicted.filter(function(pred) { | ||
return golden.indexOf(pred) >= 0; | ||
}).length; | ||
numberOfFalseNegatives = golden.filter(function(gold) { | ||
return predicted.indexOf(gold) < 0; | ||
}).length; | ||
numberOfFalsePositives = predicted.filter(function(pred) { | ||
return golden.indexOf(pred) < 0; | ||
}).length; | ||
this.numberOfFalsePositives = this.numberOfFalsePositives + numberOfFalsePositives; | ||
this.numberOfTruePositives = this.numberOfTruePositives + numberOfTruePositives; | ||
this.numberOfFalseNegatives = this.numberOfFalseNegatives + numberOfFalseNegatives; | ||
}; | ||
AccuracyMeter.prototype.getResultToStringMethod = function(precision, recall, fscore) { | ||
return function() { | ||
var table = new Table({ | ||
head: ['Precision', 'Recall', 'Fscore'], | ||
colWidths: [100, 200] | ||
}); | ||
numberOfFalseNegatives=golden.filter(function(gold){ | ||
return predicted.indexOf(gold)<0; | ||
}); | ||
numberOfFalsePositives=predicted.filter(function(pred){ | ||
return golden.indexOf(pred)<0; | ||
}); | ||
this.numberOfFalsePositive=this.numberOfFalsePositive+numberOfFalsePositives; | ||
this.numberOfTruePositives=this.numberOfTruePositives+numberOfTruePositives; | ||
this.numberOfFalseNegatives=this.numberOfFalseNegatives+numberOfFalseNegatives; | ||
table.push([precision, recall, fscore]); | ||
return table.toString(); | ||
}; | ||
}; | ||
AccuracyMeter.prototype.print=function(){ | ||
var precision; | ||
var recall; | ||
var fmesasure; | ||
AccuracyMeter.prototype.get = function() { | ||
var precision; | ||
var recall; | ||
var fscore; | ||
precision = this.numberOfTruePositives / (this.numberOfTruePositives + this.numberOfFalsePositives); | ||
recall = this.numberOfTruePositives / (this.numberOfTruePositives + this.numberOfFalseNegatives); | ||
fscore = 2 * (precision * recall) / (precision + recall); | ||
return { | ||
precision: precision, | ||
recall: recall, | ||
fscore: fscore, | ||
toString: this.getResultToStringMethod(precision, recall, fscore) | ||
}; | ||
}; | ||
AccuracyMeter.prototype.print = function() { | ||
console.log(this.get().toString()); | ||
}; | ||
{ | ||
"name": "accuracy-meter", | ||
"version": "1.1.1", | ||
"version": "1.1.2", | ||
"description": "", | ||
"main": "accuracy-meter.js", | ||
"scripts": { | ||
"test": "echo \"Error: no test specified\" && exit 1" | ||
"test": "cd test && mocha ./test.js" | ||
}, | ||
"author": "", | ||
"license": "ISC" | ||
"license": "ISC", | ||
"dependencies": { | ||
"cli-table": "^0.3.1" | ||
}, | ||
"devDependencies": { | ||
"chai": "^3.5.0" | ||
} | ||
} |
@@ -21,1 +21,23 @@ # accuracy-meter | ||
``` | ||
## API | ||
### add(predicted, golden) | ||
It adds a pair <predicted, golden>, representing the set of prdicted labels and the set of golden labels. Golden and predicted labels are both arrays. | ||
### get() | ||
It returns an object containing: | ||
* precision | ||
* recall | ||
* fscore | ||
# Why | ||
* node.js is not a standard language for NLP tasks, but... | ||
* machine learning is more and more in the cloud (check Watson NLP Classifier) | ||
* machine learning is becoming just a set of Http end points to invoke | ||
* node.js is perfect as middleware and client among Http end points | ||
* ...accuracy-meter might help you to measure the accuracy of your algorithms in the cloud | ||
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
Found 1 instance in 1 package
3802
4
74
1
43
1
1
+ Addedcli-table@^0.3.1
+ Addedcli-table@0.3.11(transitive)
+ Addedcolors@1.0.3(transitive)