24小时热门版块排行榜    

查看: 1487  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

xmcrobbie

银虫 (小有名气)

[求助] libsvm的参数困惑!已有2人参与

在做测试的时候,对参数进行grid搜索

[bestacc,bestc,bestg] = SVMcgForClass(trainlabels,trainsample,-10,10,-10,10);

cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg)];
disp(cmd);

model = svmtrain(trainlabels, trainsample, cmd);
[predict_label, accuracy] = svmpredict(testlabels,testsample, model);


我观察了一下发现,这时bestc是等于16,bestg等于0.5.
很显然这个参数是根据trainsample训练出来的。svmpredict的精度是98.7。

然后,我修改了代码,没有调用 SVMcgForClass

直接手动指定
bestc=512,bestg=0.015625
cmd = ['-c 512 -g 0.015625' ];
model = svmtrain(trainlabels, trainsample, cmd);
[predict_label, accuracy] = svmpredict(testlabels,testsample, model);

svmpredict的精度更高,精度是98.95%。。
哪个结果更准确????
回复此楼

» 收录本帖的淘帖专辑推荐

感兴趣的文章

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

itissogood

新虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
我不知道我说的对不对啊。我的意见供你参考。
据我所知,libsvm里是用训练集,进行交叉检验,从而搜索最优的c和g。也就说,所得的两个参数也是基于训练集的。
根据机器学习的一般性规律,这些对训练集是最优的参数,对预测集未必是最优。
所以可能你自己手工指定的参数的预测结果可能会更好。
2楼2014-03-10 10:54:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xmcrobbie 的主题更新
信息提示
请填处理意见