【发布时间】:2015-11-26 04:51:07
【问题描述】:
我目前正在尝试运行 LibSVM,位于:https://www.csie.ntu.edu.tw/~cjlin/libsvm
我只能访问 MATLAB 2011b。当我尝试使用不同的 C 和 gamma 值运行 LibSVM 包中包含的示例数据文件(heartscale)时,我得到了相同的准确度结果。
其他数据集也会发生这种情况。
我构建了一个 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
【问题讨论】:
标签: machine-learning libsvm cross-validation hyperparameters forward-testing