我目前正在尝试运行LibSVM
位于此处:https ://www.csie.ntu.edu.tw/~cjlin/libsvm
我只能访问 MATLAB 2011b。当我尝试LibSVM
使用不同的值运行包中C
包含的示例数据文件(heartscale)时,gamma
我得到了相同的精度结果。
这也发生在其他数据集上。
我建立了一个for
循环并循环通过不同的C
值gamma
和精度%的不改变。
我这样做是为了找到最好的C
,并gamma
按照上述网站上的文档“支持向量分类的实用指南”中的建议用于数据集(交叉验证)。
当我查看accuracy_mat
我在下面构建的时,这些值都是相同的。甚至来自的输出svmpredict
也是相同的。
我已多次阅读文档并查看网站上的常见问题解答,并希望 SVM 从业者对此提供意见。
[heart_scale_label, heart_scale_inst] = libsvmread( 'heartscale' );
C = { '2^-5','2^-3','2^-1'};
g = {'2^-15','2^-3','2^-1'};
accuracy_mat = zeros( length( g ), length( c ) );
data_num = length( heart_scale_inst(:,1) );
t = zeros( data_num, 1 );
for i = 1:length( g )
for j = 1:length( C )
c_train_inputs = ['-c ', C{j}];
g_train_inputs = ['-g ', g{i}];
c_and_g_inputs = [c_train_inputs, g_train_inputs];
model = svmtrain( heart_scale_label, ...
heart_scale_inst, ...
[c_and_g_inputs, '-b 1'] ...
);
[predict_label, ...
accuracy, ...
prob_estimates] = svmpredict( heart_scale_label, ...
heart_scale_inst, ...
model, ...
'-b 1' ...
);
accuracy_mat(i,j) = max( accuracy );
end
end