运用libSVM工具箱,有两个主要函数svmtrain和svmpredict,对数据进行训练和测试,可以实现多分类。
model = svmtrain(train_label,traindata, 'libsvm_options');
"libsvm_options:
"-s SVM类型:设置SVM类型(默认0)"
" 0 -- C-SVC (multi-class classification)"
" 1 -- nu-SVC (multi-class classification)"
" 2 -- one-class SVM"
" 3 -- epsilon-SVR (regression)"
" 4 -- nu-SVR (regression)"
"-t 核函数类型: 设置核函数类型(默认是0)"
" 0 -- 线性核函数: u'*v"
" 1 -- 多项式核函数:(gamma*u'*v + coef0)^degree"
" 2 -- RBF核函数:exp(-gamma*|u-v|^2)"
" 3 -- sigmoid核函数:tanh(gamma*u'*v + coef0)"
"-d:核函数中的degree设置(针对多项式核函数)(默认3)"
"-g:核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)(默认1/k,k为总类别数)"
"-r:核函数中的coef0设置(针对多项式/sigmoid核函数)(默认0)"
"-c:设置C-SVC,e-SVR和nu-SVR的参数(损失函数)(默认1)"
"-n:设置nu-SVC,one-class SVM和nu-SVR的参数(n默认0.5)"
"-p:设置e-SVR中损失函数的p值(默认0.1)"
"-m:设置cache内存大小,以MB为单位(默认100)"
"-e:设置允许的终止判据epsilon的值(默认0.001)"
"-h:是否使用启发式,0或1(默认1)"
"-b:是否用概率估计值训练一个SVC或SVR模型,0或1(默认0)"
"-wi weight:设置C-SVC的第i类的参数C的权重weight*C,(默认1)"
"-v:n-fold检验模式,n为fold的个数,必须大于等于2"
"-q:静止模式(无输出)"
[predicted_label, accuracy, decision_values/prob_estimates] = svmpredict(test_label, test_data, model, 'libsvm_options');
" model: SVM model structure from svmtrain."
" libsvm_options:"
"-b:是否预测概率估计值,0或1,(默认0);不支持one-class SVM"
"-q:静止模式(无输出)"
"Returns:"
" predicted_label: SVM预测输出的标签"
" accuracy:一个向量,包括准确率,均方误差,平方相关系数"
" prob_estimates:如果选择,返回一个概率估计向量"
参考文献
关于libSVM的一些总结