MCPcopy Create free account
hub / github.com/audeering/opensmile / svm_predict_probability

Function svm_predict_probability

scripts/modeltrain/libsvm-small/svm.cpp:2563–2600  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2561}
2562
2563double svm_predict_probability(
2564 const svm_model *model, const svm_node *x, double *prob_estimates)
2565{
2566 if ((model->param.svm_type == C_SVC || model->param.svm_type == NU_SVC) &&
2567 model->probA!=NULL && model->probB!=NULL)
2568 {
2569 int i;
2570 int nr_class = model->nr_class;
2571 double *dec_values = Malloc(double, nr_class*(nr_class-1)/2);
2572 svm_predict_values(model, x, dec_values);
2573
2574 double min_prob=1e-7;
2575 double **pairwise_prob=Malloc(double *,nr_class);
2576 for(i=0;i<nr_class;i++)
2577 pairwise_prob[i]=Malloc(double,nr_class);
2578 int k=0;
2579 for(i=0;i<nr_class;i++)
2580 for(int j=i+1;j<nr_class;j++)
2581 {
2582 pairwise_prob[i][j]=min(max(sigmoid_predict(dec_values[k],model->probA[k],model->probB[k]),min_prob),1-min_prob);
2583 pairwise_prob[j][i]=1-pairwise_prob[i][j];
2584 k++;
2585 }
2586 multiclass_probability(nr_class,pairwise_prob,prob_estimates);
2587
2588 int prob_max_idx = 0;
2589 for(i=1;i<nr_class;i++)
2590 if(prob_estimates[i] > prob_estimates[prob_max_idx])
2591 prob_max_idx = i;
2592 for(i=0;i<nr_class;i++)
2593 free(pairwise_prob[i]);
2594 free(dec_values);
2595 free(pairwise_prob);
2596 return model->label[prob_max_idx];
2597 }
2598 else
2599 return svm_predict(model, x);
2600}
2601
2602const char *svm_type_table[] =
2603{

Callers 2

liblinear_predictFunction · 0.70
svm_cross_validationFunction · 0.70

Calls 7

MallocFunction · 0.85
svm_predict_valuesFunction · 0.70
minFunction · 0.70
maxFunction · 0.70
sigmoid_predictFunction · 0.70
multiclass_probabilityFunction · 0.70
svm_predictFunction · 0.70

Tested by

no test coverage detected