svmtrain和svmpredict简介分类:SVM本文主要介绍了SVM工具箱中svmtrain和svmpredict两个主要函数:(1)model=svmtrain(train_label,train_matrix,['libsvm_options']);其中:train_label表示训练集的标签。train_matrix表示训练集的属性矩阵。libsvm_options是需要设置的一系列参数,各个参数可参见《libsvm参数说明.txt》,里面介绍的很详细,中英文都有的。如果用回归的话,其中的-s参数值应为3。model:是训练得到的模型,是一个结构体(如果参数中用到-v,得到的就不是结构体,对于分类问题,得到的是交叉检验下的平均分类准确率;对于回归问题,得到的是均方误差)。(2)[predicted_label,accuracy/mse,decision_values/prob_estimates]=svmpredict(test_label,test_matrix,model,['libsvm_options']);其中:test_label表示测试集的标签(这个值可以不知道,因为作预测的时候,本来就是想知道这个值的,这个时候,随便制定一个值就可以了,只是这个时候得到的mse就没有意义了)。test_matrix表示测试集的属性矩阵。model是上面训练得到的模型。libsvm_options是需要设置的一系列参数。predicted_label表示预测得到的标签。accuracy/mse是一个3*1的列向量,其中第1个数字用于分类问题,表示分类准确率;后两个数字用于回归问题,第2个数字表示mse;第三个数字表示平方相关系数(也就是说,如果分类的话,看第一个数字就可以了;回归的话,看后两个数字)。decision_values/prob_estimates:第三个返回值,一个矩阵包含决策的值或者概率估计。对于n个预测样本、k类的问题,如果指定“-b1”参数,则nxk的矩阵,每一行表示这个样本分别属于每一个类别的概率;如果没有指定“-b1”参数,则为nxk*(k-1)/2的矩阵,每一行表示k(k-1)/2个二分类SVM的预测结果。(3)训练的参数LIBSVM训练时可以选择的参数很多,包括:-ssvm类型:SVM设置类型(默认0)0—C-SVC;1–v-SVC;2–一类SVM;3—e-SVR;4—v-SVR-t核函数类型:核函数设置类型(默认2)0–线性核函数:u’v1–多项式核函数:(r*u’v+coef0)^degree2–RBF(径向基)核函数:exp(-r|u-v|^2)3–sigmoid核函数:tanh(r*u’v+coef0)-ddegree:核函数中的degree设置(针对多项式核函数)(默认3)-gr(gamma):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)(默认1/k,k为总类别数)-rcoef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)-ccost:设置C-SVC,e-SVR和v-SVR的参数(损失函数)(默认1)-nnu:设置v-SVC,一类SVM和v-SVR的参数(默认0.5)-pp:设置e-SVR中损失函数p的值(默认0.1)-mcachesize:设置cache内存大小,以MB为单位(默认40)-eeps:设置允许的终止判据(默认0.001)-hshrinking:是否使用启发式,0或1(默认1)-wiweight:设置第几类的参数C为weight*C(C-SVC中的C)(默认1)-vn:n-fold交互检验模式,n为fold的个数,必须大于等于2以上这些参数设置可以按照SVM的类型和核函数所支持的参数进行任意组合,如果设置的参数在函数或SVM类型中没有也不会产生影响,程序不会接受该参数;如果应有的参数设置不正确,参数将采用默认值。