37 lines
1.1 KiB
Text
37 lines
1.1 KiB
Text
/* Diverisity Prediction Theorem, in Jsish */
|
|
"use strict";
|
|
|
|
function sum(arr:array):number {
|
|
return arr.reduce(function(acc, cur, idx, arr) { return acc + cur; });
|
|
}
|
|
|
|
function square(x:number):number {
|
|
return x * x;
|
|
}
|
|
|
|
function mean(arr:array):number {
|
|
return sum(arr) / arr.length;
|
|
}
|
|
|
|
function averageSquareDiff(a:number, predictions:array):number {
|
|
return mean(predictions.map(function(x:number):number { return square(x - a); }));
|
|
}
|
|
|
|
function diversityTheorem(truth:number, predictions:array):object {
|
|
var average = mean(predictions);
|
|
return {
|
|
"average-error": averageSquareDiff(truth, predictions),
|
|
"crowd-error": square(truth - average),
|
|
"diversity": averageSquareDiff(average, predictions)
|
|
};
|
|
}
|
|
|
|
;diversityTheorem(49, [48,47,51]);
|
|
;diversityTheorem(49, [48,47,51,42]);
|
|
|
|
/*
|
|
=!EXPECTSTART!=
|
|
diversityTheorem(49, [48,47,51]) ==> { "average-error":3, "crowd-error":0.1111111111111127, diversity:2.888888888888889 }
|
|
diversityTheorem(49, [48,47,51,42]) ==> { "average-error":14.5, "crowd-error":4, diversity:10.5 }
|
|
=!EXPECTEND!=
|
|
*/
|