StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
756 B
47 lines
756 B
4 years ago
|
'use strict'
|
||
|
|
||
|
module.exports = barycentric
|
||
|
|
||
|
var solve = require('robust-linear-solve')
|
||
|
|
||
|
function reduce(x) {
|
||
|
var r = 0
|
||
|
for(var i=0; i<x.length; ++i) {
|
||
|
r += x[i]
|
||
|
}
|
||
|
return r
|
||
|
}
|
||
|
|
||
|
function barycentric(simplex, point) {
|
||
|
var d = point.length
|
||
|
var A = new Array(d+1)
|
||
|
for(var i=0; i<d; ++i) {
|
||
|
var row = new Array(d+1)
|
||
|
for(var j=0; j<=d; ++j) {
|
||
|
row[j] = simplex[j][i]
|
||
|
}
|
||
|
A[i] = row
|
||
|
}
|
||
|
A[d] = new Array(d+1)
|
||
|
for(var i=0; i<=d; ++i) {
|
||
|
A[d][i] = 1
|
||
|
}
|
||
|
|
||
|
var b = new Array(d+1)
|
||
|
for(var i=0; i<d; ++i) {
|
||
|
b[i] = point[i]
|
||
|
}
|
||
|
b[d] = 1.0
|
||
|
|
||
|
var x = solve(A, b)
|
||
|
var w = reduce(x[d+1])
|
||
|
|
||
|
if(w === 0) {
|
||
|
w = 1.0
|
||
|
}
|
||
|
var y = new Array(d+1)
|
||
|
for(var i=0; i<=d; ++i) {
|
||
|
y[i] = reduce(x[i]) / w
|
||
|
}
|
||
|
return y
|
||
|
}
|