Skip to content

Commit

Permalink
Introduce mutliclass support for SVC models (one-vs-one decision fuc…
Browse files Browse the repository at this point in the history
…ntion output) (#89)
  • Loading branch information
izeigerman authored and krinart committed May 14, 2019
1 parent 2475f3c commit dddfc67
Show file tree
Hide file tree
Showing 18 changed files with 879 additions and 58 deletions.
71 changes: 71 additions & 0 deletions generated_code_examples/c/classification/svm.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#include <math.h>
#include <string.h>
void score(double * input, double * output) {
double var0;
var0 = (0) - (0.25);
double var1;
var1 = exp((var0) * ((((pow((5.4) - (input[0]), 2)) + (pow((3.0) - (input[1]), 2))) + (pow((4.5) - (input[2]), 2))) + (pow((1.5) - (input[3]), 2))));
double var2;
var2 = exp((var0) * ((((pow((6.2) - (input[0]), 2)) + (pow((2.2) - (input[1]), 2))) + (pow((4.5) - (input[2]), 2))) + (pow((1.5) - (input[3]), 2))));
double var3;
var3 = exp((var0) * ((((pow((5.0) - (input[0]), 2)) + (pow((2.3) - (input[1]), 2))) + (pow((3.3) - (input[2]), 2))) + (pow((1.0) - (input[3]), 2))));
double var4;
var4 = exp((var0) * ((((pow((5.9) - (input[0]), 2)) + (pow((3.2) - (input[1]), 2))) + (pow((4.8) - (input[2]), 2))) + (pow((1.8) - (input[3]), 2))));
double var5;
var5 = exp((var0) * ((((pow((5.0) - (input[0]), 2)) + (pow((2.0) - (input[1]), 2))) + (pow((3.5) - (input[2]), 2))) + (pow((1.0) - (input[3]), 2))));
double var6;
var6 = exp((var0) * ((((pow((6.7) - (input[0]), 2)) + (pow((3.0) - (input[1]), 2))) + (pow((5.0) - (input[2]), 2))) + (pow((1.7) - (input[3]), 2))));
double var7;
var7 = exp((var0) * ((((pow((7.0) - (input[0]), 2)) + (pow((3.2) - (input[1]), 2))) + (pow((4.7) - (input[2]), 2))) + (pow((1.4) - (input[3]), 2))));
double var8;
var8 = exp((var0) * ((((pow((4.9) - (input[0]), 2)) + (pow((2.4) - (input[1]), 2))) + (pow((3.3) - (input[2]), 2))) + (pow((1.0) - (input[3]), 2))));
double var9;
var9 = exp((var0) * ((((pow((6.3) - (input[0]), 2)) + (pow((2.5) - (input[1]), 2))) + (pow((4.9) - (input[2]), 2))) + (pow((1.5) - (input[3]), 2))));
double var10;
var10 = exp((var0) * ((((pow((6.0) - (input[0]), 2)) + (pow((2.7) - (input[1]), 2))) + (pow((5.1) - (input[2]), 2))) + (pow((1.6) - (input[3]), 2))));
double var11;
var11 = exp((var0) * ((((pow((5.7) - (input[0]), 2)) + (pow((2.6) - (input[1]), 2))) + (pow((3.5) - (input[2]), 2))) + (pow((1.0) - (input[3]), 2))));
double var12;
var12 = exp((var0) * ((((pow((5.1) - (input[0]), 2)) + (pow((3.8) - (input[1]), 2))) + (pow((1.9) - (input[2]), 2))) + (pow((0.4) - (input[3]), 2))));
double var13;
var13 = exp((var0) * ((((pow((4.4) - (input[0]), 2)) + (pow((2.9) - (input[1]), 2))) + (pow((1.4) - (input[2]), 2))) + (pow((0.2) - (input[3]), 2))));
double var14;
var14 = exp((var0) * ((((pow((5.7) - (input[0]), 2)) + (pow((4.4) - (input[1]), 2))) + (pow((1.5) - (input[2]), 2))) + (pow((0.4) - (input[3]), 2))));
double var15;
var15 = exp((var0) * ((((pow((5.8) - (input[0]), 2)) + (pow((4.0) - (input[1]), 2))) + (pow((1.2) - (input[2]), 2))) + (pow((0.2) - (input[3]), 2))));
double var16;
var16 = exp((var0) * ((((pow((5.1) - (input[0]), 2)) + (pow((3.3) - (input[1]), 2))) + (pow((1.7) - (input[2]), 2))) + (pow((0.5) - (input[3]), 2))));
double var17;
var17 = exp((var0) * ((((pow((5.7) - (input[0]), 2)) + (pow((3.8) - (input[1]), 2))) + (pow((1.7) - (input[2]), 2))) + (pow((0.3) - (input[3]), 2))));
double var18;
var18 = exp((var0) * ((((pow((4.3) - (input[0]), 2)) + (pow((3.0) - (input[1]), 2))) + (pow((1.1) - (input[2]), 2))) + (pow((0.1) - (input[3]), 2))));
double var19;
var19 = exp((var0) * ((((pow((4.5) - (input[0]), 2)) + (pow((2.3) - (input[1]), 2))) + (pow((1.3) - (input[2]), 2))) + (pow((0.3) - (input[3]), 2))));
double var20;
var20 = exp((var0) * ((((pow((6.3) - (input[0]), 2)) + (pow((2.7) - (input[1]), 2))) + (pow((4.9) - (input[2]), 2))) + (pow((1.8) - (input[3]), 2))));
double var21;
var21 = exp((var0) * ((((pow((6.0) - (input[0]), 2)) + (pow((3.0) - (input[1]), 2))) + (pow((4.8) - (input[2]), 2))) + (pow((1.8) - (input[3]), 2))));
double var22;
var22 = exp((var0) * ((((pow((6.3) - (input[0]), 2)) + (pow((2.8) - (input[1]), 2))) + (pow((5.1) - (input[2]), 2))) + (pow((1.5) - (input[3]), 2))));
double var23;
var23 = exp((var0) * ((((pow((5.8) - (input[0]), 2)) + (pow((2.8) - (input[1]), 2))) + (pow((5.1) - (input[2]), 2))) + (pow((2.4) - (input[3]), 2))));
double var24;
var24 = exp((var0) * ((((pow((6.1) - (input[0]), 2)) + (pow((3.0) - (input[1]), 2))) + (pow((4.9) - (input[2]), 2))) + (pow((1.8) - (input[3]), 2))));
double var25;
var25 = exp((var0) * ((((pow((7.7) - (input[0]), 2)) + (pow((2.6) - (input[1]), 2))) + (pow((6.9) - (input[2]), 2))) + (pow((2.3) - (input[3]), 2))));
double var26;
var26 = exp((var0) * ((((pow((6.9) - (input[0]), 2)) + (pow((3.1) - (input[1]), 2))) + (pow((5.1) - (input[2]), 2))) + (pow((2.3) - (input[3]), 2))));
double var27;
var27 = exp((var0) * ((((pow((6.3) - (input[0]), 2)) + (pow((3.3) - (input[1]), 2))) + (pow((6.0) - (input[2]), 2))) + (pow((2.5) - (input[3]), 2))));
double var28;
var28 = exp((var0) * ((((pow((4.9) - (input[0]), 2)) + (pow((2.5) - (input[1]), 2))) + (pow((4.5) - (input[2]), 2))) + (pow((1.7) - (input[3]), 2))));
double var29;
var29 = exp((var0) * ((((pow((6.0) - (input[0]), 2)) + (pow((2.2) - (input[1]), 2))) + (pow((5.0) - (input[2]), 2))) + (pow((1.5) - (input[3]), 2))));
double var30;
var30 = exp((var0) * ((((pow((7.9) - (input[0]), 2)) + (pow((3.8) - (input[1]), 2))) + (pow((6.4) - (input[2]), 2))) + (pow((2.0) - (input[3]), 2))));
double var31;
var31 = exp((var0) * ((((pow((7.2) - (input[0]), 2)) + (pow((3.0) - (input[1]), 2))) + (pow((5.8) - (input[2]), 2))) + (pow((1.6) - (input[3]), 2))));
double var32;
var32 = exp((var0) * ((((pow((7.7) - (input[0]), 2)) + (pow((3.8) - (input[1]), 2))) + (pow((6.7) - (input[2]), 2))) + (pow((2.2) - (input[3]), 2))));
memcpy(output, (double[]){(((((((((((((((((((-0.08359187780790468) + ((var1) * (-0.0))) + ((var2) * (-0.0))) + ((var3) * (-0.4393498355605194))) + ((var4) * (-0.009465620856664334))) + ((var5) * (-0.16223369966927))) + ((var6) * (-0.26861888775075243))) + ((var7) * (-0.4393498355605194))) + ((var8) * (-0.4393498355605194))) + ((var9) * (-0.0))) + ((var10) * (-0.0))) + ((var11) * (-0.19673905328606292))) + ((var12) * (0.3340655283922188))) + ((var13) * (0.3435087305152051))) + ((var14) * (0.4393498355605194))) + ((var15) * (0.0))) + ((var16) * (0.28614124535416424))) + ((var17) * (0.11269159286168087))) + ((var18) * (0.0))) + ((var19) * (0.4393498355605194)), (((((((((((((((((((((-0.18563912331454907) + ((var20) * (-0.0))) + ((var21) * (-0.06014273244194299))) + ((var22) * (-0.0))) + ((var23) * (-0.031132453078851926))) + ((var24) * (-0.0))) + ((var25) * (-0.3893079321588921))) + ((var26) * (-0.06738007627290196))) + ((var27) * (-0.1225075748937126))) + ((var28) * (-0.3893079321588921))) + ((var29) * (-0.29402231709614085))) + ((var30) * (-0.3893079321588921))) + ((var31) * (-0.0))) + ((var32) * (-0.028242141062729226))) + ((var12) * (0.16634667752431267))) + ((var13) * (0.047772685163074764))) + ((var14) * (0.3893079321588921))) + ((var15) * (0.3893079321588921))) + ((var16) * (0.0))) + ((var17) * (0.0))) + ((var18) * (0.3893079321588921))) + ((var19) * (0.3893079321588921)), ((((((((((((((((((((((((0.5566649875797668) + ((var20) * (-25.563066587228416))) + ((var21) * (-38.35628154976547))) + ((var22) * (-38.35628154976547))) + ((var23) * (-0.0))) + ((var24) * (-38.35628154976547))) + ((var25) * (-0.0))) + ((var26) * (-0.0))) + ((var27) * (-0.0))) + ((var28) * (-6.2260303727828745))) + ((var29) * (-18.42781911624364))) + ((var30) * (-0.14775026537286423))) + ((var31) * (-7.169755983020096))) + ((var32) * (-0.0))) + ((var1) * (12.612328267927264))) + ((var2) * (6.565812506955159))) + ((var3) * (0.0))) + ((var4) * (38.35628154976547))) + ((var5) * (0.0))) + ((var6) * (38.35628154976547))) + ((var7) * (0.0))) + ((var8) * (0.0))) + ((var9) * (38.35628154976547))) + ((var10) * (38.35628154976547))) + ((var11) * (0.0))}, 3 * sizeof(double));
}
6 changes: 6 additions & 0 deletions generated_code_examples/c/regression/svm.c

Large diffs are not rendered by default.

70 changes: 70 additions & 0 deletions generated_code_examples/go/classification/svm.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import "math"
func score(input []float64) []float64 {
var var0 float64
var0 = (0) - (0.25)
var var1 float64
var1 = math.Exp((var0) * ((((math.Pow((5.4) - (input[0]), 2)) + (math.Pow((3.0) - (input[1]), 2))) + (math.Pow((4.5) - (input[2]), 2))) + (math.Pow((1.5) - (input[3]), 2))))
var var2 float64
var2 = math.Exp((var0) * ((((math.Pow((6.2) - (input[0]), 2)) + (math.Pow((2.2) - (input[1]), 2))) + (math.Pow((4.5) - (input[2]), 2))) + (math.Pow((1.5) - (input[3]), 2))))
var var3 float64
var3 = math.Exp((var0) * ((((math.Pow((5.0) - (input[0]), 2)) + (math.Pow((2.3) - (input[1]), 2))) + (math.Pow((3.3) - (input[2]), 2))) + (math.Pow((1.0) - (input[3]), 2))))
var var4 float64
var4 = math.Exp((var0) * ((((math.Pow((5.9) - (input[0]), 2)) + (math.Pow((3.2) - (input[1]), 2))) + (math.Pow((4.8) - (input[2]), 2))) + (math.Pow((1.8) - (input[3]), 2))))
var var5 float64
var5 = math.Exp((var0) * ((((math.Pow((5.0) - (input[0]), 2)) + (math.Pow((2.0) - (input[1]), 2))) + (math.Pow((3.5) - (input[2]), 2))) + (math.Pow((1.0) - (input[3]), 2))))
var var6 float64
var6 = math.Exp((var0) * ((((math.Pow((6.7) - (input[0]), 2)) + (math.Pow((3.0) - (input[1]), 2))) + (math.Pow((5.0) - (input[2]), 2))) + (math.Pow((1.7) - (input[3]), 2))))
var var7 float64
var7 = math.Exp((var0) * ((((math.Pow((7.0) - (input[0]), 2)) + (math.Pow((3.2) - (input[1]), 2))) + (math.Pow((4.7) - (input[2]), 2))) + (math.Pow((1.4) - (input[3]), 2))))
var var8 float64
var8 = math.Exp((var0) * ((((math.Pow((4.9) - (input[0]), 2)) + (math.Pow((2.4) - (input[1]), 2))) + (math.Pow((3.3) - (input[2]), 2))) + (math.Pow((1.0) - (input[3]), 2))))
var var9 float64
var9 = math.Exp((var0) * ((((math.Pow((6.3) - (input[0]), 2)) + (math.Pow((2.5) - (input[1]), 2))) + (math.Pow((4.9) - (input[2]), 2))) + (math.Pow((1.5) - (input[3]), 2))))
var var10 float64
var10 = math.Exp((var0) * ((((math.Pow((6.0) - (input[0]), 2)) + (math.Pow((2.7) - (input[1]), 2))) + (math.Pow((5.1) - (input[2]), 2))) + (math.Pow((1.6) - (input[3]), 2))))
var var11 float64
var11 = math.Exp((var0) * ((((math.Pow((5.7) - (input[0]), 2)) + (math.Pow((2.6) - (input[1]), 2))) + (math.Pow((3.5) - (input[2]), 2))) + (math.Pow((1.0) - (input[3]), 2))))
var var12 float64
var12 = math.Exp((var0) * ((((math.Pow((5.1) - (input[0]), 2)) + (math.Pow((3.8) - (input[1]), 2))) + (math.Pow((1.9) - (input[2]), 2))) + (math.Pow((0.4) - (input[3]), 2))))
var var13 float64
var13 = math.Exp((var0) * ((((math.Pow((4.4) - (input[0]), 2)) + (math.Pow((2.9) - (input[1]), 2))) + (math.Pow((1.4) - (input[2]), 2))) + (math.Pow((0.2) - (input[3]), 2))))
var var14 float64
var14 = math.Exp((var0) * ((((math.Pow((5.7) - (input[0]), 2)) + (math.Pow((4.4) - (input[1]), 2))) + (math.Pow((1.5) - (input[2]), 2))) + (math.Pow((0.4) - (input[3]), 2))))
var var15 float64
var15 = math.Exp((var0) * ((((math.Pow((5.8) - (input[0]), 2)) + (math.Pow((4.0) - (input[1]), 2))) + (math.Pow((1.2) - (input[2]), 2))) + (math.Pow((0.2) - (input[3]), 2))))
var var16 float64
var16 = math.Exp((var0) * ((((math.Pow((5.1) - (input[0]), 2)) + (math.Pow((3.3) - (input[1]), 2))) + (math.Pow((1.7) - (input[2]), 2))) + (math.Pow((0.5) - (input[3]), 2))))
var var17 float64
var17 = math.Exp((var0) * ((((math.Pow((5.7) - (input[0]), 2)) + (math.Pow((3.8) - (input[1]), 2))) + (math.Pow((1.7) - (input[2]), 2))) + (math.Pow((0.3) - (input[3]), 2))))
var var18 float64
var18 = math.Exp((var0) * ((((math.Pow((4.3) - (input[0]), 2)) + (math.Pow((3.0) - (input[1]), 2))) + (math.Pow((1.1) - (input[2]), 2))) + (math.Pow((0.1) - (input[3]), 2))))
var var19 float64
var19 = math.Exp((var0) * ((((math.Pow((4.5) - (input[0]), 2)) + (math.Pow((2.3) - (input[1]), 2))) + (math.Pow((1.3) - (input[2]), 2))) + (math.Pow((0.3) - (input[3]), 2))))
var var20 float64
var20 = math.Exp((var0) * ((((math.Pow((6.3) - (input[0]), 2)) + (math.Pow((2.7) - (input[1]), 2))) + (math.Pow((4.9) - (input[2]), 2))) + (math.Pow((1.8) - (input[3]), 2))))
var var21 float64
var21 = math.Exp((var0) * ((((math.Pow((6.0) - (input[0]), 2)) + (math.Pow((3.0) - (input[1]), 2))) + (math.Pow((4.8) - (input[2]), 2))) + (math.Pow((1.8) - (input[3]), 2))))
var var22 float64
var22 = math.Exp((var0) * ((((math.Pow((6.3) - (input[0]), 2)) + (math.Pow((2.8) - (input[1]), 2))) + (math.Pow((5.1) - (input[2]), 2))) + (math.Pow((1.5) - (input[3]), 2))))
var var23 float64
var23 = math.Exp((var0) * ((((math.Pow((5.8) - (input[0]), 2)) + (math.Pow((2.8) - (input[1]), 2))) + (math.Pow((5.1) - (input[2]), 2))) + (math.Pow((2.4) - (input[3]), 2))))
var var24 float64
var24 = math.Exp((var0) * ((((math.Pow((6.1) - (input[0]), 2)) + (math.Pow((3.0) - (input[1]), 2))) + (math.Pow((4.9) - (input[2]), 2))) + (math.Pow((1.8) - (input[3]), 2))))
var var25 float64
var25 = math.Exp((var0) * ((((math.Pow((7.7) - (input[0]), 2)) + (math.Pow((2.6) - (input[1]), 2))) + (math.Pow((6.9) - (input[2]), 2))) + (math.Pow((2.3) - (input[3]), 2))))
var var26 float64
var26 = math.Exp((var0) * ((((math.Pow((6.9) - (input[0]), 2)) + (math.Pow((3.1) - (input[1]), 2))) + (math.Pow((5.1) - (input[2]), 2))) + (math.Pow((2.3) - (input[3]), 2))))
var var27 float64
var27 = math.Exp((var0) * ((((math.Pow((6.3) - (input[0]), 2)) + (math.Pow((3.3) - (input[1]), 2))) + (math.Pow((6.0) - (input[2]), 2))) + (math.Pow((2.5) - (input[3]), 2))))
var var28 float64
var28 = math.Exp((var0) * ((((math.Pow((4.9) - (input[0]), 2)) + (math.Pow((2.5) - (input[1]), 2))) + (math.Pow((4.5) - (input[2]), 2))) + (math.Pow((1.7) - (input[3]), 2))))
var var29 float64
var29 = math.Exp((var0) * ((((math.Pow((6.0) - (input[0]), 2)) + (math.Pow((2.2) - (input[1]), 2))) + (math.Pow((5.0) - (input[2]), 2))) + (math.Pow((1.5) - (input[3]), 2))))
var var30 float64
var30 = math.Exp((var0) * ((((math.Pow((7.9) - (input[0]), 2)) + (math.Pow((3.8) - (input[1]), 2))) + (math.Pow((6.4) - (input[2]), 2))) + (math.Pow((2.0) - (input[3]), 2))))
var var31 float64
var31 = math.Exp((var0) * ((((math.Pow((7.2) - (input[0]), 2)) + (math.Pow((3.0) - (input[1]), 2))) + (math.Pow((5.8) - (input[2]), 2))) + (math.Pow((1.6) - (input[3]), 2))))
var var32 float64
var32 = math.Exp((var0) * ((((math.Pow((7.7) - (input[0]), 2)) + (math.Pow((3.8) - (input[1]), 2))) + (math.Pow((6.7) - (input[2]), 2))) + (math.Pow((2.2) - (input[3]), 2))))
return []float64{(((((((((((((((((((-0.08359187780790468) + ((var1) * (-0.0))) + ((var2) * (-0.0))) + ((var3) * (-0.4393498355605194))) + ((var4) * (-0.009465620856664334))) + ((var5) * (-0.16223369966927))) + ((var6) * (-0.26861888775075243))) + ((var7) * (-0.4393498355605194))) + ((var8) * (-0.4393498355605194))) + ((var9) * (-0.0))) + ((var10) * (-0.0))) + ((var11) * (-0.19673905328606292))) + ((var12) * (0.3340655283922188))) + ((var13) * (0.3435087305152051))) + ((var14) * (0.4393498355605194))) + ((var15) * (0.0))) + ((var16) * (0.28614124535416424))) + ((var17) * (0.11269159286168087))) + ((var18) * (0.0))) + ((var19) * (0.4393498355605194)), (((((((((((((((((((((-0.18563912331454907) + ((var20) * (-0.0))) + ((var21) * (-0.06014273244194299))) + ((var22) * (-0.0))) + ((var23) * (-0.031132453078851926))) + ((var24) * (-0.0))) + ((var25) * (-0.3893079321588921))) + ((var26) * (-0.06738007627290196))) + ((var27) * (-0.1225075748937126))) + ((var28) * (-0.3893079321588921))) + ((var29) * (-0.29402231709614085))) + ((var30) * (-0.3893079321588921))) + ((var31) * (-0.0))) + ((var32) * (-0.028242141062729226))) + ((var12) * (0.16634667752431267))) + ((var13) * (0.047772685163074764))) + ((var14) * (0.3893079321588921))) + ((var15) * (0.3893079321588921))) + ((var16) * (0.0))) + ((var17) * (0.0))) + ((var18) * (0.3893079321588921))) + ((var19) * (0.3893079321588921)), ((((((((((((((((((((((((0.5566649875797668) + ((var20) * (-25.563066587228416))) + ((var21) * (-38.35628154976547))) + ((var22) * (-38.35628154976547))) + ((var23) * (-0.0))) + ((var24) * (-38.35628154976547))) + ((var25) * (-0.0))) + ((var26) * (-0.0))) + ((var27) * (-0.0))) + ((var28) * (-6.2260303727828745))) + ((var29) * (-18.42781911624364))) + ((var30) * (-0.14775026537286423))) + ((var31) * (-7.169755983020096))) + ((var32) * (-0.0))) + ((var1) * (12.612328267927264))) + ((var2) * (6.565812506955159))) + ((var3) * (0.0))) + ((var4) * (38.35628154976547))) + ((var5) * (0.0))) + ((var6) * (38.35628154976547))) + ((var7) * (0.0))) + ((var8) * (0.0))) + ((var9) * (38.35628154976547))) + ((var10) * (38.35628154976547))) + ((var11) * (0.0))}
}
6 changes: 6 additions & 0 deletions generated_code_examples/go/regression/svm.go

Large diffs are not rendered by default.

Loading

0 comments on commit dddfc67

Please sign in to comment.