Download ensemble.js from elvis-hf/ensemble: direct link, hf CLI and curl.
- Browser
- Download file 1.53 kB
-
https://huggingface.co/spaces/elvis-hf/ensemble/resolve/main/ensemble.js
- Command line
-
hf download hf://spaces/elvis-hf/ensemble/ensemble.js
-
curl -L -o ensemble.js https://huggingface.co/spaces/elvis-hf/ensemble/resolve/main/ensemble.js
1.53 kB
| /* Display helpers for scikit-learn predictions, including multiclass SAMME. */ | |
| (function(root){ | |
| function gridValue(model,p,values){ | |
| const n=model.size,x=Math.max(0,Math.min(n-1,Math.round(p.x*(n-1)))),y=Math.max(0,Math.min(n-1,Math.round(p.y*(n-1)))); | |
| return values[y*n+x]; | |
| } | |
| function predict(model,p){return gridValue(model,p,model.grid);} | |
| function weightsFor(points,models){ | |
| if(!points.length)return []; | |
| const logs=points.map((p,i)=>models.reduce((s,m)=>s+(p.label!==m.predictions[i]?m.alpha:0),0)); | |
| const max=Math.max(...logs),weights=logs.map(v=>Math.exp(v-max)),total=weights.reduce((a,b)=>a+b,0); | |
| return weights.map(w=>w/total); | |
| } | |
| function combine(models,prediction,probabilities){ | |
| const classes=models[0]?.classes||[-1,1]; | |
| const scores=new Map(classes.map(c=>[c,0])); | |
| for(const m of models){ | |
| if(m.forest){ | |
| const values=probabilities(m); | |
| m.classes.forEach((c,i)=>scores.set(c,scores.get(c)+values[i])); | |
| }else{ | |
| const c=prediction(m);scores.set(c,scores.get(c)+m.alpha); | |
| } | |
| } | |
| return classes.reduce((best,c)=>scores.get(c)>scores.get(best)?c:best,classes[0]); | |
| } | |
| function vote(models,p){return combine(models,m=>predict(m.tree,p),m=>gridValue(m.tree,p,m.tree.probabilities));} | |
| function trainingVote(models,i){return combine(models,m=>m.predictions[i],m=>m.trainingProbabilities[i]);} | |
| const api={predict,weightsFor,vote,trainingVote}; | |
| if(typeof module!=='undefined')module.exports=api;else root.Ensemble=api; | |
| })(globalThis); | |