diff --git a/src/interpolation/interpolationPivots.js b/src/interpolation/interpolationPivots.js index c7ec82f..ff04534 100644 --- a/src/interpolation/interpolationPivots.js +++ b/src/interpolation/interpolationPivots.js @@ -30,6 +30,7 @@ export default function(sampleSet, remainderSet, numPivots, distanceFn, endingIt let sets = takeSampleFrom(sampleSet, numPivots); let pivots = sets.sample; let nonPivotSamples = sets.remainder; + let correct = 0, wrong = 0, percentsOff = []; let pivotsBuckets = []; // [ For each Pivot:[For each bucket:[each point in bucket]] ] for (let i = 0; i < numPivots; i++) { @@ -130,6 +131,45 @@ export default function(sampleSet, remainderSet, numPivots, distanceFn, endingIt if (sampleSubsetDistanceCache[k] === undefined) sampleSubsetDistanceCache[k] = distanceFn(node, sampleSubset[k]); } + + let nearestSample, nearestMinDist, sample, dist; + for (let j = sampleSet.length-1; j>=0; j--) { + sample = sampleSet[j]; + dist = distanceFn(node, sample); + if (nearestSample === undefined || dist < nearestMinDist) { + nearestMinDist = dist; + nearestSample = sample; + } + } + + if(minDist-nearestMinDist == 0) correct++; + else { + wrong++; + if(nearestMinDist!=0)percentsOff.push(minDist/nearestMinDist) + } + placeNearToNearestNeighbour(node, nearSample, minDist, sampleSubset, sampleSubsetDistanceCache, endingIts); } + console.log("Correct", correct); + console.log("Wrong", wrong); + console.log("Correct percent", 100*correct/(correct+wrong)); + StandardDeviation(percentsOff) +} + +function StandardDeviation(numbersArr) { + //--CALCULATE AVAREGE-- + var total = 0; + for(var key in numbersArr) + total += numbersArr[key]; + var meanVal = total / numbersArr.length; + console.log("Average percent off", meanVal); + //--CALCULATE AVAREGE-- + + //--CALCULATE STANDARD DEVIATION-- + var SDprep = 0; + for(var key in numbersArr) + SDprep += Math.pow((parseFloat(numbersArr[key]) - meanVal),2); + var SDresult = Math.sqrt(SDprep/numbersArr.length); + //--CALCULATE STANDARD DEVIATION-- + console.log("SD percent off", SDresult); }