Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- #include <errno.h>
- #include "libsvm.h"
- #include "main.h"
- #define Malloc(type,n) (type *)malloc((n)*sizeof(type)) // struct svm_node *x = (struct svm_node *) malloc((n+1)*sizeof(struct svm_node));
- struct svm_parameter param; // set by parse_command_line
- struct svm_problem prob; // set by read_problem
- struct svm_model *model;
- struct svm_node *x_space;
- struct svm_node ** x;
- struct svm_node *testnode;
- void makeModel2(void) // int main(int argc, char **argv)
- {
- //char input_file_name[1024];
- //char model_file_name[1024];
- //const char *error_msg;
- param.svm_type = C_SVC;
- param.kernel_type = RBF;
- param.degree = 3;
- param.gamma = 0.5;
- param.coef0 = 0;
- param.nu = 0.5;
- param.cache_size = 100;
- param.C = 1;
- param.eps = 1e-3;
- param.p = 0.1;
- param.shrinking = 1;
- param.probability = 0;
- param.nr_weight = 0;
- param.weight_label = NULL;
- param.weight = NULL;
- //Problem definition-------------------------------------------------------------
- prob.l = 4;
- //x values matrix of xor values
- double matrix[prob.l][2];
- matrix[0][0] = 1;
- matrix[0][1] = 1;
- matrix[1][0] = 1;
- matrix[1][1] = 0;
- matrix[2][0] = 0;
- matrix[2][1] = 1;
- matrix[3][0] = 0;
- matrix[3][1] = 0;
- //This part i have trouble understanding
- struct svm_node** x = (struct svm_node * *)malloc((prob.l)*sizeof(struct svm_node *)); // svm_node** x = Malloc(svm_node*,prob.l); // (x *)malloc((prob.l)*sizeof(prob.l)) // x = Malloc(x,prob.l);
- //Trying to assign from matrix to svm_node training examples
- for (int row = 0;row <prob.l; row++){
- x_space = Malloc(x_space,3); // svm_node* x_space = Malloc(svm_node,3); // x_space = Malloc(x_space,3); // struct svm_node *x_space = (struct svm_node *) malloc((3)*sizeof(struct svm_node));
- for (int col = 0;col < 2;col++){
- x_space[col].index = col;
- x_space[col].value = matrix[row][col];
- }
- x_space[2].index = -1; //Each row of properties should be terminated with a -1 according to the readme
- x[row] = x_space;
- }
- prob.x = x;
- //yvalues
- prob.y = (double *)malloc((prob.l)*sizeof(double)); // prob.y = Malloc(double,prob.l); // prob.y = Malloc(prob.y,prob.l);
- prob.y[0] = -1;
- prob.y[1] = 1;
- prob.y[2] = 1;
- prob.y[3] = -1;
- //Train model---------------------------------------------------------------------
- model = svm_train(&prob,¶m); // svm_model *model = svm_train(&prob,¶m);
- //Test model----------------------------------------------------------------------
- struct svm_node *testnode = (struct svm_node *) malloc((3)*sizeof(struct svm_node)); // svm_node* testnode = Malloc(svm_node,3); // testnode = Malloc(testnode,3); // testnode = Malloc(testnode,3);
- testnode[0].index = 0;
- testnode[0].value = 1;
- testnode[1].index = 1;
- testnode[1].value = 0;
- testnode[2].index = -1;
- //This works correctly:
- retval[0] = svm_predict(model,testnode); // double retval = svm_predict(model,testnode);
- //printf("retval: %fn",retval);
- svm_destroy_param(¶m);
- free(prob.y);
- free(prob.x);
- free(x_space);
- //return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement