svm_predict_probability函数  需要在train之前设置parameter参数 才能得到概率模型。

当svm_parameter.probability=1,或者options中的-b参数设置为1时。

struct svm_parameter

{

int svm_type;

int kernel_type;

int degree; /* for poly */

double gamma; /* for poly/rbf/sigmoid */

double coef0; /* for poly/sigmoid */


/* these are for training only */

double cache_size; /* in MB */

double eps; /* stopping criteria */

double C; /* for C_SVC, EPSILON_SVR, and NU_SVR */

int nr_weight; /* for C_SVC */

int *weight_label; /* for C_SVC */

double* weight; /* for C_SVC */

double nu; /* for NU_SVC, ONE_CLASS, and NU_SVR */

double p; /* for EPSILON_SVR */

int shrinking; /* use the shrinking heuristics */

int probability; /* do probability estimates */ 1 do,0 not

};

2)svm_predict_probability函数与svm_predict函数在接口上只有第三个参数prob_estimates不同,其余两个都相同,所以这里只说明第三个参数的作用。prob_estimates里实际上存放的就是估计出的概率,比如说m分类问题,那prob_estimates就是一个1*m列的矩阵,没列代表属于相对类别的概率。这个相对类别是与svm输出结构体中的Lable相对应的!

3)返回值,返回的就是最大概率对应的类别标签。如果二分类问题那就是1或-1.