#include "DecisionTree.h" // __AQ_NO_SESSION__ #include "../server/table.h" #include "aquery.h" DecisionTree *dt = nullptr; __AQEXPORT__(bool) newtree(int height, long f, ColRef sparse, double forget, long maxf, long noclasses, Evaluation e, long r, long rb) { if (sparse.size != f) return false; int *issparse = (int *)malloc(f * sizeof(int)); for (long i = 0; i < f; i++) issparse[i] = sparse.container[i]; if (maxf < 0) maxf = f; dt = new DecisionTree(f, issparse, forget, maxf, noclasses, e); return true; } // size_t pt = 0; // __AQEXPORT__(bool) fit(ColRef> X, ColRef y){ // if(X.size != y.size)return 0; // double** data = (double**)malloc(X.size*sizeof(double*)); // long* result = (long*)malloc(y.size*sizeof(long)); // for(long i=0; i> v, vector_type res) { double **data = (double **)malloc(v.size * sizeof(double *)); for (int i = 0; i < v.size; ++i) data[i] = v.container[i].container; dt->fit(data, res.container, v.size); return true; } __AQEXPORT__(vectortype_cstorage) predict(vector_type> v) { int *result = (int *)malloc(v.size * sizeof(int)); for (long i = 0; i < v.size; i++) result[i] = dt->Test(v.container[i].container, dt->DTree); auto container = (vector_type *)malloc(sizeof(vector_type)); container->size = v.size; container->capacity = 0; container->container = result; auto ret = vectortype_cstorage{.container = container, .size = 1, .capacity = 0}; return ret; }