libsvm中参数设置输入方式
(2016-01-19 21:39:12)
标签:
svm |
分类: 故障诊断 |
一、c g
参数优化时的输入方式
model = svmtrain(train_data_labels, train_data,‘-c
1 -g 0.5’);% SVM网络预测
[predict_label, accuracy,decision_values] = svmpredict(test_data_labels, test_data, model);%
可以运行,并从model.parameters可以看出g=0.5
如果需要寻找最优参数c和g
val_c=1
val_g=0.5
cmd=['-c',' ' ,num2str(val_c),' ' ,'-g',' ' ,num2str(val_g)];
model = svmtrain(train_data_labels, train_data,cmd);
注意cmd的写法中,‘
’是为了保证空格的存在,即可以从运行结果中看出cmd其实为‘-c
1 -g 0.5’,这也是新设置-t,-h等其他参数的关键。
如果不加空格,cmd变为‘-c
1-g 0.5’,后面的-g参数相当于没有进行设置,svm使用的是默认值。
二、新添加参数的使用验证
例如我们想选择核函数-t
在LIBSVM中-t用来指定核函数类型(默认值是2)。
0)线性核函数
(无其他参数)
1)多项式核函数
(重点是阶数的选择,即d,一般选择1-11:1 3 5 7 9 11,也可以选择2,4,6…)
2)RBF核函数
(径向基RBF内核,exp{-|xi-xj|^2/均方差},其中均方差反映了数据波动的大小。
参数通常可选择下面几个数的倒数:0.1 0.2 0.4 0.6 0.8 1.6 3.2 6.4 12.8,默认的是类别数的倒数,即1/k,2分类的话就是0.5)
3)sigmoid核函数
两个参数g以及r:g一般可选1 2 3 4,r选0.2 0.4 0.60.8 1
4)自定义核函数
model = svmtrain(train_data_labels, train_data,'-c 1 -g 0.4 -t 1' );
或者
cmd=['-c',' ' ,num2str(bestc),' ' ,'-g',' ' ,num2str(bestg),' ' ,'-t',' ' ,'3'];
model = svmtrain(train_data_labels, train_data,cmd);
我们通过训练好厚的model中的parameter参数验证,设置t是否生效
model.Parameters参数意义从上到下依次为:
-s svm类型:SVM设置类型(默认0)
-t
-d degree:核函数中的degree设置(针对多项式核函数)(默认3)
-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数) (默认类别数目的倒数)
-r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)
经过查看,两种方法均可以设置此例中的第二个参数为1,说明设置生效
0
1
3
0.400000000000000
0