libsvm中SVMcgForClass目录怎么自动生成成的图是什么意思

查看: 4115|回复: 0|关注: 0
对13章SVM参数选择的SVMcgForClass.m进行修改的过程中遇到问题
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
我在做SVM分类的过程中,通过实验我发现针对我的数据,当参数选择为‘-s 1 -t 3’的时候是目前为止效果最好的,分类准确率是77.2727%,在此基础上我想对相应的参数进行优化,看是否能够再次提高分类准确率。
不过因为用的是sigmoid核函数,所以SVMcgForClass.m不能直接使用,因此我对这个函数进行了修改,写了SVMngForClass.m,目的是对参数nu和gamma进行优化。但是在运行的过程中出现了下面的错误:
Error: specified nu is infeasible
??? Subscripted assignment dimension mismatch.
Error in ==& SVMngForClass at 53
& && &&&cg(i,j) = svmtrain(train_label, train, cmd);
下面贴出来我改写出来的SVMngForClass.m的代码:
function [bestacc,bestn,bestg] = SVMngForClass(train_label,train,nmin,nmax,gmin,gmax,v,nstep,gstep,accstep)
if nargin & 10
& & accstep = 3.5;
if nargin & 8
& & nstep = 0.1;
& & gstep = 0.3;
if nargin & 7
& & v = 5;
if nargin & 5
& & gmax = 8;
& & gmin = -8;
if nargin & 3
& & nmax = 0;
& & nmin = -5;
% X:c Y:g cg:CVaccuracy
[X,Y] = meshgrid(nmin:nstep:nmax,gmin:gstep:gmax);
[m,n] = size(X);
cg = zeros(m,n);
eps = 10^(-4);
% record acc with different c & g,and find the bestacc with the smallest c
bestn = 0.5;
bestg = 0.5;
bestacc = 0.772;
basenum = 2;
for i = 1:m
& & for j = 1:n
& && &&&cmd = ['-s 1 -t 3 ','-v ',num2str(v),' -n ',num2str(basenum^X(i,j)),' -g ',num2str(basenum^Y(i,j))];
& && &&&cg(i,j) = svmtrain(train_label, train, cmd);
& && &&&if cg(i,j) &= 55
& && && && &
& && &&&end
& && &&&if cg(i,j) & bestacc
& && && && &bestacc = cg(i,j);
& && && && &bestn = basenum^X(i,j);
& && && && &bestg = basenum^Y(i,j);
& && &&&end& && &&&
& && &&&if abs( cg(i,j)-bestacc )&=eps && bestn & basenum^X(i,j)
& && && && &bestacc = cg(i,j);
& && && && &bestn = basenum^X(i,j);
& && && && &bestg = basenum^Y(i,j);
& && &&&end& && &&&
% to draw the acc with different c & g
[C,h] = contour(X,Y,cg,77:accstep:100);
clabel(C,h,'Color','r');
xlabel('log2c','FontSize',12);
ylabel('log2g','FontSize',12);
firstline = 'SVC参数选择结果图(等高线图)[GridSearchMethod]';
secondline = ['Best n=',num2str(bestn),' g=',num2str(bestg), ...
& & ' CVAccuracy=',num2str(bestacc),'%'];
title({secondline},'Fontsize',12);
meshc(X,Y,cg);
% mesh(X,Y,cg);
% surf(X,Y,cg);
axis([nmin,nmax,gmin,gmax,30,100]);
xlabel('log2c','FontSize',12);
ylabel('log2g','FontSize',12);
zlabel('Accuracy(%)','FontSize',12);
firstline = 'SVC参数选择结果图(3D视图)[GridSearchMethod]';
secondline = ['Best n=',num2str(bestn),' g=',num2str(bestg), ...
& & ' CVAccuracy=',num2str(bestacc),'%'];
title({secondline},'Fontsize',12);
主程序为:
load yanglidata.
% 选定训练集和测试集
train_data=yanglidata(1:40,;
train_label=yanglidata_label(1:40);
test_data=yanglidata(41:62,;
test_label=yanglidata_label(41:62);
% 首先进行粗略选择: c&g 的变化范围是 2^(-10),2^(-9),...,2^(10)
[bestacc,bestn,bestg] = SVMngForClass(train_label,train_data,-10,0,-10,10);
% 打印粗略选择结果
disp('打印粗略选择结果');
str = sprintf( 'Best Cross Validation Accuracy = %g%% Best n = %g Best g = %g',bestacc,bestn,bestg);
disp(str);
% 根据粗略选择的结果图再进行精细选择: c 的变化范围是 2^(-2),2^(-1.5),...,2^(4), g 的变化范围是 2^(-4),2^(-3.5),...,2^(4),
[bestacc,bestn,bestg] = SVMngForClass(train_label,train_data,0,1,-4,4,5,0.1,0.3,0.2);
% 打印精细选择结果
disp('打印精细选择结果');
str = sprintf( 'Best Cross Validation Accuracy = %g%% Best n = %g Best g = %g',bestacc,bestn,bestg);
disp(str);
%% 利用最佳的参数进行SVM网络训练
cmd = ['-s 1 -t 3 ','-n ',num2str(bestn),' -g ',num2str(bestg)];
model = svmtrain(train_label,train_data,cmd);
%% SVM网络预测
[predict_label,accuracy] = svmpredict(test_label,test_data,model);
我的疑问是:1、在SVMcgForClass.m中 cmd = ['-t 3',' -v ',num2str(v),' -c ',num2str( basenum^X(i,j) ),' -g ',num2str( basenum^Y(i,j) )]; 这里-c和-g的值为什么要使用basenum^X(i,j)和basenum^Y(i,j)的形式,而不直接使用X(i,j)和Y(i,j)的形式
在我要解决的问题中,选择的是nu-SVC,参数nu的取值范围是0&nu&=1,这个应该如何来处理,nmin和nmax的值选择多少比较合适
18:00 上传
点击文件名下载附件
884 Bytes, 下载次数: 98
用到的数据
站长推荐 /2
活动地点已更新
Powered by>> SVMcgForClass.m
SVMcgForClass.m ( File view )
function [bestacc,bestc,bestg] = SVMcgForClass(train_label,train,cmin,cmax,gmin,gmax,v,cstep,gstep,accstep)
%SVMcg cross validation by faruto
% by faruto
%Email:patrick. QQ: .cn/faruto BNU
%last modified
%Super Moderator @
%% 若转载请注明:
% faruto and liyang , LIBSVM-farutoUltimateVersion
% a toolbox with implements for support vector machines based on libsvm, 2009.
% Software available at
% Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for
% support vector machines, 2001. Software available at
% http://www.csie.ntu.edu.tw/~cjlin/libsvm
%% about the parameters of SVMcg
if nargin & 10
accstep = 4.5;
if nargin & 8
cstep = 0.8;
gstep = 0.8;
if nargin & 7
if nargin & 5
gmin = -8;
if nargin & 3
cmin = -8;
%% X:c Y:g cg:CVaccuracy
[X,Y] = meshgrid(cmin:cstep:cmax,gmin:gstep:gmax);
[m,n] = size(X);
cg = zeros(m,n);
eps = 10^(-4);
%% record acc with different c & g,and find the bestacc with the smallest c
bestc = 1;
bestg = 0.1;
bestacc = 0;
basenum = 2;
for i = 1:m
for j = 1:n
cmd = ['-v ',num2str(v),' -c ',num2str( basenum^X(i,j) ),' -g ',num2str( basenum^Y(i,j) )];
cg(i,j) = svmtrain(train_label, train, cmd);
if cg(i,j) &= 55
if cg(i,j) & bestacc
bestacc = cg(i,j);
bestc = basenum^X(i,j);
bestg = basenum^Y(i,j);
if abs( cg(i,j)-bestacc )&=eps && bestc & basenum^X(i,j)
bestacc = cg(i,j);
bestc = basenum^X(i,j);
bestg = basenum^Y(i,j);
%% to draw the acc with different c & g
[C,h] = contour(X,Y,cg,70:accstep:100);
clabel(C,h,'Color','r');
xlabel('log2c','FontSize',12);
ylabel('log2g','FontSize',12);
firstline = 'SVC参数选择结果图(等高线图)[GridSearchMethod]';
secondline = ['Best c=',num2str(bestc),' g=',num2str(bestg), ...
' CVAccuracy=',num2str(bestacc),'%'];
secondline
},'Fontsize',12);
meshc(X,Y,cg);
% mesh(X,Y,cg);
% surf(X,Y,cg);
axis([cmin,cmax,gmin,gmax,30,100]);
xlabel('log2c','FontSize',12);
ylabel('log2g','FontSize',12);
zlabel('Accuracy(%)','FontSize',12);
firstline = 'SVC参数选择结果图(3D视图)[GridSearchMethod]';
secondline = ['Best c=',num2str(bestc),' g=',num2str(bestg), ...
' CVAccuracy=',num2str(bestacc),'%'];
secondline
},'Fontsize',12);
Expand> <Close
Want complete source code? Download it here
0 lines left, continue to read ▼
Sponsored links
Tips: You can preview the content of files by clicking file names^_^
wine_test.mat22.58 kB30-10-09 08:28
x123.mat2.87 kB30-10-09 14:39
2.90 kB07-04-09 23:28
201.00 B23-11-07 21:06
3.73 kB15-04-09 13:04
2.07 kB01-05-09 13:34
7.50 kB15-04-09 14:36
8.84 kB15-04-09 14:36
11.11 kB06-09-09 18:47
60.96 kB06-04-09 13:39
svm.obj63.52 kB16-01-10 01:15
svm_model_matlab.obj6.15 kB16-01-10 01:16
libsvmread.mexw3220.00 kB16-01-10 01:16
libsvmwrite.mexw3220.00 kB16-01-10 01:16
svmpredict.mexw3224.00 kB16-01-10 01:16
svmtrain.mexw3244.00 kB16-01-10 01:16
229.00 B15-04-09 10:37
heart_scale.mat28.23 kB22-03-05 20:37
&libsvm&0.00 B49% 18-08-09
0.00 B30% 21-11-09
COPYRIGHT1.46 kB17-02-09 18:07
1.43 kB15-04-09 14:36
8.97 kB24-04-09 22:35
2.77 kB24-01-10 15:14
2.11 kB17-01-10 09:36
871.00 B17-01-10 14:51
3.69 kB21-01-10 21:40
3.43 kB21-01-10 21:42
3.70 kB17-01-10 10:20
3.14 kB22-04-98 10:44
1.79 kB22-04-98 10:44
1.14 kB22-04-98 10:44
2.14 kB22-04-98 10:44
2.04 kB22-04-98 10:44
7.04 kB22-04-98 10:44
3.92 kB22-04-98 10:44
1.57 kB22-04-98 10:44
3.36 kB22-04-98 10:44
4.83 kB22-04-98 10:44
4.60 kB22-04-98 10:44
1.78 kB22-04-98 10:44
1.85 kB22-04-98 10:44
1.91 kB22-04-98 10:44
4.74 kB22-04-98 10:44
2.38 kB22-04-98 10:44
5.44 kB22-04-98 10:44
1.18 kB22-04-98 10:44
2.03 kB22-04-98 10:44
1.06 kB22-04-98 10:44
1.24 kB22-04-98 10:44
2.34 kB22-04-98 10:44
1.29 kB22-04-98 10:44
1.02 kB22-04-98 10:44
1.06 kB22-04-98 10:44
2.73 kB22-04-98 10:44
1.01 kB22-04-98 10:44
1.05 kB22-04-98 10:44
1.02 kB22-04-98 10:44
1.06 kB22-04-98 10:44
5.42 kB10-01-08 16:11
5.24 kB06-04-08 15:16
4.04 kB06-04-08 15:16
1.29 kB17-01-10 15:21
5.58 kB24-01-10 15:16
5.27 kB24-01-10 15:16
0.00 B30% 21-11-09
1.02 kB18-01-10 18:51
4.09 kB17-01-10 14:52
993.00 B17-01-10 15:21
2.63 kB17-01-10 14:52
2.55 kB17-01-10 14:53
1.92 kB17-01-10 14:53
5.73 kB21-01-10 21:47
1.16 kB21-01-10 21:47
1.10 kB17-01-10 14:53
TutorialForFarutoUltimate3.0.pdf216.84 kB17-01-10 16:23
3.87 kB17-01-10 14:53
&gatbx[Sheffield]&0.00 B16-01-10 14:35
&myprivate&0.00 B16-01-10 14:09
&pcode&0.00 B17-01-10 14:50
&test_data&0.00 B17-01-10 14:58
&implement[by&0.00 B0% 24-01-10
3.51 kB17-01-10 16:17
Sponsored links
Sent successfully!
libsvm-mat-2.89-3[FarutoUltima
Your Point(s)
Your Point isn't enough.
Get point immediately by PayPal
10 Points / $20
22 Points / $40
55 Points / $100
120 Points / $200
point will be added to your account automatically after the transaction.
Don't have an account?
Need any help?
切换到中文版?
^_^"Oops ...
Sorry!This guy is mysterious, its blog hasn't been opened, try another, please!
Favorite by数据挖掘(69)
LIBSVM使用方法及参数设置(转)
原文地址:
数据&#26684;式需要----------------------
决策属性&条件属性a&条件属性b ...
2 1:7 2:5 ...
1 1:4 2:2 ...
数据&#26684;式转换----------------------
当数据较少时,可以用formatdatalibsvm轻松地将文本数据转换成为svm工具使用的数据。
使用方法为:
1,打开FormatDataLibsvm.xls然后将数据粘贴到sheet1的topleft单元。
输入&#26684;式为:
条件属性a&条件属性b ...&决策属性
输出数据&#26684;式是
决策属性&条件属性a&条件属性b ...
2 1:7 2:5 ...
1 1:4 2:2 ...
2,再&工具&--&&宏&--&执行下面有一个选项(FormatDatatoLibsvm)--&执行,要选中这个然后运行就可以了,这时数据转换的问题就解决了(如果没有宏选项,点击“开始--excel选项---在功能区显示“开发工具”选项卡”)
3,可以copy到一个记事本中即可。但是注意在用libsvm的时候要在命令行输入.txt后缀。
svm参数说明----------------------
如果你要输出类的概率,一定要有-b参数
svm-train training_set_file model_file
svm-predict test_file model_fileoutput_file
自动脚本:python easy.py train_data test_data
自动选择最优参数,自动进行归一化。
对训练集合和测试结合,使用同一个归一化参数。
-v:交叉验证数
-s svm_type : set type of SVM (default 0)
0 -- C-SVC
1 -- nu-SVC
2 -- one-class SVM
3 -- epsilon-SVR
4 -- nu-SVR
-t kernel_type : set type of kernelfunction (default 2)
0 -- linear: u'*v
1 -- polynomial: (gamma*u'*v &#43; coef0)^degree
2 -- radial basis function: exp(-gamma*|u-v|^2)
3 -- sigmoid: tanh(gamma*u'*v &#43; coef0)
-d degree : set degree in kernel function(default 3)
-g gamma : set gamma in kernel function(default 1/num_features)
-r coef0 : set coef0 in kernel function(default 0)
-c cost : set the parameter C of C-SVC,epsilon-SVR, and nu-SVR (default 1)
-n nu : set the parameter nu of nu-SVC,one-class SVM, and nu-SVR (default 0.5)
-p epsilon : set the epsilon in lossfunction of epsilon-SVR (default 0.1)
-m cachesize : set cache memory size in MB(default 100)
-e epsilon : set tolerance of terminationcriterion (default 0.001)
-h shrinking: whether to use the shrinkingheuristics, 0 or 1 (default 1)
-b probability_estimates: whether to traina SVC or SVR model for probability estimates, 0 or 1 (default 0)(如果需要估计分到每个类的概率,则需要设置这个)
-wi weight: set the parameter C of class ito weight*C, for C-SVC (default 1)
Thek in the -g option means the number of attributes in the input data.
libsvm使用误区----------------------
(1)&直接将训练集合和测试集合简单归一化到[0,1]区间,可能导致实验结果很差。
(2)&如果样本的特征数非常多,那么就不必使用RBF核将样本映射到高维空间。
a)&在特征数非常多的情况下,使用线性核,结果已经非常好,并且只需要选择参数C即可。
b)&虽然说RBF核的结果至少比线性核好,前提下搜索整个的空间。
(3)&样本数&&特征数的情况:
a)&推荐使用线性核,可以达到与RBF同样的性能。
(4)&样本数和特征数都非常多:推荐使用liblinear,更少的时间和内存,可比的准确率。
(5)&样本数&&特征数:如果想使用线性模型,可以使用liblinear,并且使用-s
libsvm在训练model的时候,有如下参数要设置,当然有默认的参数,但是在具体应用方面效果会大大折扣。
Options:可用的选项即表示的涵义如下
-s svm类型:SVM设置类型(默认0)
0 -- C-SVC
2&–一类SVM
3 -- e -SVR
4 -- v-SVR
-t&核函数类型:核函数设置类型(默认2)
0&–线性:u'v
1&–多项式:(r*u'v &#43; coef0)^degree
2&–&RBF函数:exp(-gamma|u-v|^2)
3&–sigmoid:tanh(r*u'v &#43; coef0)
-d degree:核函数中的degree设置(针对多项式核函数)(默认3)
-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)(默认1/
-r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)
-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1)
-n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5)
-p p:设置e -SVR&中损失函数p的&#20540;(默认0.1)
-m cachesize:设置cache内存大小,以MB为单位(默认40)
-e eps:设置允许的终止判据(默认0.001)
-h shrinking:是否使用启发式,0或1(默认1)
-wi weight:设置第几类的参数C为weight*C(C-SVC中的C)(默认1)
-v n: n-fold交互检验模式,n为fold的个数,必须大于等于2
  其中-g选项中的k是指输入数据中的属性数。option -v&随机地将数据剖分为n部
当构建完成model后,还要为上述参数选择合适的&#20540;,方法主要有Gridsearch,其他的感觉不常用,Gridsearch说白了就是穷举。
网&#26684;参数寻优函数(分类问题):SVMcgForClass
[bestCVaccuracy,bestc,bestg]=
SVMcgForClass(train_label,train,
cmin,cmax,gmin,gmax,v,cstep,gstep,accstep)
train_label:训练集的标签,&#26684;式要求与svmtrain相同。
train:训练集,&#26684;式要求与svmtrain相同。
cmin,cmax:惩罚参数c的变化范围,即在[2^cmin,2^cmax]范围内寻找最佳的参数c,默认&#20540;为cmin=-8,cmax=8,即默认惩罚参数c的范围是[2^(-8),2^8]。
gmin,gmax:RBF核参数g的变化范围,即在[2^gmin,2^gmax]范围内寻找最佳的RBF核参数g,默认&#20540;为gmin=-8,gmax=8,即默认RBF核参数g的范围是[2^(-8),2^8]。
v:进行Cross Validation过程中的参数,即对训练集进行v-fold Cross Validation,默认为3,即默认进行3折CV过程。
cstep,gstep:进行参数寻优是c和g的步进大小,即c的取&#20540;为2^cmin,2^(cmin&#43;cstep),…,2^cmax,,g的取&#20540;为2^gmin,2^(gmin&#43;gstep),…,2^gmax,默认取&#20540;为cstep=1,gstep=1。
accstep:最后参数选择结果图中准确率离散化显示的步进间隔大小([0,100]之间的一个数),默认为4.5。
bestCVaccuracy:最终CV意义下的最佳分类准确率。
bestc:最佳的参数c。
bestg:最佳的参数g。
网&#26684;参数寻优函数(回归问题):SVMcgForRegress
[bestCVmse,bestc,bestg]=
SVMcgForRegress(train_label,train,
cmin,cmax,gmin,gmax,v,cstep,gstep,msestep)
其输入输出与SVMcgForClass类&#20284;,这里不再赘述。
而当你训练完了model,在用它做classification或regression之前,应该知道model中的内容,以及其含义。
用来训练的是libsvm自带的heart数据
Parameters: [5x1 double]
nr_class: 2
totalSV: 259 %&支持向量的数目
rho: 0.0514 % b
Label: [2x1 double] % classification中标签的个数
nSV: [2x1 double] %&每类支持向量的个数
sv_coef: [259x1 double] %&支持向量对应的Wi
SVs: [259x13 double] %&装的是259个支持向量
model.Parameters参数意义从上到下依次为:
-s svm类型:SVM设置类型(默认0)
-t&核函数类型:核函数设置类型(默认2)
-d degree:核函数中的degree设置(针对多项式核函数)(默认3)
-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)
(默认类别数目的倒数)
-r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)
SVM&怎样能得到好的结果
1.&对数据做归一化(simple scaling)
2.&应用&RBF kernel
3.&用cross-validation和grid-search&得到最优的c和g
4.&用得到的最优c和g训练训练数据
关于svm的C以及核函数参数设置----------------------
参考自:对支持向量机几种常用核函数和参数选择的比较研究
C一般可以选择为:10^t , t=- 4..4就是0.0001&到10000
选择的越大,表示对错误例惩罚程度越大,可能会导致模型过拟合
在LIBSVM中-t用来指定核函数类型(默认&#20540;是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核函数&又叫做S形内核
两个参数g以及r:g一般可选1
2 3 4,r选0.2 0.4 0.60.8 1
4)自定义核函数
常用的四种核函数对应的公式如下:
与核函数相对应的libsvm参数:
1)对于线性核函数,没有专门需要设置的参数
2)对于多项式核函数,有三个参数。-d用来设置多项式核函数的最高此项次数,也就是公式中的d,默认&#20540;是3。-g用来设置核函数中的gamma参数设置,也就是公式中的第一个r(gamma),默认&#20540;是1/k(k是类别数)。-r用来设置核函数中的coef0,也就是公式中的第二个r,默认&#20540;是0。
3)对于RBF核函数,有一个参数。-g用来设置核函数中的gamma参数设置,也就是公式中的第一个r(gamma),默认&#20540;是1/k(k是类别数)。
4)对于sigmoid核函数,有两个参数。-g用来设置核函数中的gamma参数设置,也就是公式中的第一个r(gamma),默认&#20540;是1/k(k是类别数)。-r用来设置核函数中的coef0,也就是公式中的第二个r,默认&#20540;是0。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3337次
排名:千里之外
转载:73篇
(29)(48)(1)34561人阅读
因为要用svm做regression,所以看了一些关于libsvm,总结以备用
libsvm在训练model的时候,有如下参数要设置,当然有默认的参数,但是在具体应用方面效果会大大折扣。
Options:可用的选项即表示的涵义如下
  -s svm类型:SVM设置类型(默认0)
  0 -- C-SVC
  1 --v-SVC
  2 – 一类SVM
  3 -- e -SVR
  4 -- v-SVR
  -t 核函数类型:核函数设置类型(默认2)
  0 – 线性:u'v
  1 – 多项式:(r*u'v &#43; coef0)^degree
  2 – RBF函数:exp(-gamma|u-v|^2)
  3 –sigmoid:tanh(r*u'v &#43; coef0)
  -d degree:核函数中的degree设置(针对多项式核函数)(默认3)
  -g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)(默认1/ k)
  -r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)
  -c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1)
  -n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5)
  -p p:设置e -SVR 中损失函数p的&#20540;(默认0.1)
  -m cachesize:设置cache内存大小,以MB为单位(默认40)
  -e eps:设置允许的终止判据(默认0.001)
  -h shrinking:是否使用启发式,0或1(默认1)
  -wi weight:设置第几类的参数C为weight*C(C-SVC中的C)(默认1)
  -v n: n-fold交互检验模式,n为fold的个数,必须大于等于2
  其中-g选项中的k是指输入数据中的属性数。option -v 随机地将数据剖分为n部
当构建完成model后,还要为上述参数选择合适的&#20540;,方法主要有Gridsearch,其他的感觉不常用,Gridsearch说白了就是穷举。
网&#26684;参数寻优函数(分类问题):SVMcgForClass
[bestCVaccuracy,bestc,bestg]=
SVMcgForClass(train_label,train,
cmin,cmax,gmin,gmax,v,cstep,gstep,accstep)
train_label:训练集的标签,&#26684;式要求与svmtrain相同。
train:训练集,&#26684;式要求与svmtrain相同。
cmin,cmax:惩罚参数c的变化范围,即在[2^cmin,2^cmax]范围内寻找最佳的参数c,默认&#20540;为cmin=-8,cmax=8,即默认惩罚参数c的范围是[2^(-8),2^8]。
gmin,gmax:RBF核参数g的变化范围,即在[2^gmin,2^gmax]范围内寻找最佳的RBF核参数g,默认&#20540;为gmin=-8,gmax=8,即默认RBF核参数g的范围是[2^(-8),2^8]。
v:进行Cross Validation过程中的参数,即对训练集进行v-fold Cross Validation,默认为3,即默认进行3折CV过程。
cstep,gstep:进行参数寻优是c和g的步进大小,即c的取&#20540;为2^cmin,2^(cmin&#43;cstep),…,2^cmax,,g的取&#20540;为2^gmin,2^(gmin&#43;gstep),…,2^gmax,默认取&#20540;为cstep=1,gstep=1。
accstep:最后参数选择结果图中准确率离散化显示的步进间隔大小([0,100]之间的一个数),默认为4.5。
bestCVaccuracy:最终CV意义下的最佳分类准确率。
bestc:最佳的参数c。
bestg:最佳的参数g。
网&#26684;参数寻优函数(回归问题):SVMcgForRegress
[bestCVmse,bestc,bestg]=
SVMcgForRegress(train_label,train,
cmin,cmax,gmin,gmax,v,cstep,gstep,msestep)
其输入输出与SVMcgForClass类&#20284;,这里不再赘述。
而当你训练完了model,在用它做classification或regression之前,应该知道model中的内容,以及其含义。
用来训练的是libsvm自带的heart数据
& & Parameters: [5x1 double]
& && &nr_class: 2
& && & totalSV: 259 & & & & & & & & & %&支持向量的数目
& && && &&&rho: 0.0514 & & & & & & & % &b
& && && &Label: [2x1 double] & & % &classification中标签的个数
& && && &ProbA: []
& && && &ProbB: []
& && && &&&nSV: [2x1 double] & &&% &每类支持向量的个数
& & & & sv_coef: [259x1 double] &% & 支持向量对应的Wi
& && && &&&SVs: [259x13 double]& % &&装的是259个支持向量
model.Parameters参数意义从上到下依次为:
-s svm类型:SVM设置类型(默认0)
-t 核函数类型:核函数设置类型(默认2)
-d degree:核函数中的degree设置(针对多项式核函数)(默认3)
-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数) (默认类别数目的倒数)
-r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)
SVM 怎样能得到好的结果
1.&&&&对数据做归一化(simple&scaling)
2.&&&&应用 RBF kernel
3.&&&&用cross-validation和grid-search得到最优的c和g
4.&&&&用得到的最优c和g训练训练数据
5.&&&&测试
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:138864次
积分:1782
积分:1782
排名:第16709名
原创:62篇
评论:36条
(1)(5)(1)(1)(1)(3)(17)(22)(9)(2)(1)(5)(1)}

我要回帖

更多关于 自动生成目录 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信