24小时热门版块排行榜    

查看: 3603  |  回复: 3

zgyzhp

新虫 (初入文坛)

[求助] matlab libsvm中svm参数优化时准确率超低,只有7%!求解决办法!!!

求大神救命!!!我快绝望了!我根据网上教程,在svm做参数c,g优化时,准确率超级低,只有7%!这是什么原因,求解答!另外,我不知道数据怎么像heart_scale.m里面有2个数据heart_scale_int和heart_scale_labels,所以我把我的数据保存成2个.m文件,一个是因变量,只有一个因变量(data_labels.m),一个是自变量数据,共9个自变量(data.m)。不知道有没有什么影响。ps,我的数据是用matlab打开excel文件,再将它保存为.m格式,需要将数据变成libsvm格式吗?下面是我的运行程序。
CODE:
load data
>> load data_labels
>> train_data=[data(1:57,:)];
>> train_data_labels=[data_labels(1:57)];
>> test_data=[data(58:71,:)];
>> test_data_labels=[data_labels(58:71)];
>> [train_data,pstrain]=mapminmax(train_data');
>> pstrain.ymin=0;
>> patrain.ymax=1;
>> [train_data,pstrain]=mapminmax(train_data,pstrain);
>> test_data=[data(58:71,:)];
>> [test_data,pstest]=mapminmax(test_data');
>> pstest.ymin=0;
>> pstest.ymax=1;
>> [test_data,pstest]=mapminmax(test_data,pstest);
>> train_data=train_data';
>> test_data=test_data';
>> [bestacc,bestc,bestg] = SVMcgForClass(train_data_labels,train_data,-10,10,-10,10);
部分结果显示为:
optimization finished, #iter = 1
nu = 0.000977obj = -1.000000, rho = 0.000000nSV = 2, nBSV = 0
*optimization finished, #iter = 1
nu = 0.000977obj = -1.000000, rho = 0.000000nSV = 2, nBSV = 0
*optimization finished, #iter = 1
nu = 0.000977obj = -1.000000, rho = 0.000000nSV = 2, nBSV = 0
*optimization finished, #iter = 1
nu = 0.000977obj = -1.000000, rho = 0.000000nSV = 2, nBSV = 0Total nSV = 22
Cross Validation Accuracy = 7.01754%
求大神解答!!!!救命!!!一定要看到我!!!!!
下面是SVMcgForClass程序文件
function [ bestacc,bestc,bestg ] = SVMcgForClass(train_data_labels,train_data,cmin,cmax,gmin,gmax,v,cstep,gstep,accstep)
%UNTITLED3 Summary of this function goes here
%   Detailed explanation goes here
% SVMcgForClass
% 输入:
% train_data_labels:训练集标签.要求与libsvm工具箱中要求一致.
% train:训练集.要求与libsvm工具箱中要求一致.
% cmin:惩罚参数c的变化范围的最小值(取以2为底的对数后),即 c_min = 2^(cmin).默认为 -5
% cmax:惩罚参数c的变化范围的最大值(取以2为底的对数后),即 c_max = 2^(cmax).默认为 5
% gmin:参数g的变化范围的最小值(取以2为底的对数后),即 g_min = 2^(gmin).默认为 -5
% gmax:参数g的变化范围的最小值(取以2为底的对数后),即 g_min = 2^(gmax).默认为 5
% v:cross validation的参数,即给测试集分为几部分进行cross validation.默认为 3
% cstep:参数c步进的大小.默认为 1
% gstep:参数g步进的大小.默认为 1
% accstep:最后显示准确率图时的步进大小.默认为 1.5
% 输出:
% bestacc:Cross Validation 过程中的最高分类准确率
% bestc:最佳的参数c
% bestg:最佳的参数g
% about the parameters of SVMcgForClass
if nargin < 10
    accstep = 1.5;
end
if nargin < 8
    accstep = 1.5;
    cstep = 1;
    gstep = 1;
end
if nargin < 7
    accstep = 1.5;
    v = 3;
    cstep = 1;
    gstep = 1;
end
if nargin < 6
    accstep = 1.5;
    v = 3;
    cstep = 1;
    gstep = 1;
    gmax = 5;
end
if nargin < 5
    accstep = 1.5;
    v = 3;
    cstep = 1;
    gstep = 1;
    gmax = 5;
    gmin = -5;
end
if nargin < 4
    accstep = 1.5;
    v = 3;
    cstep = 1;
    gstep = 1;
    gmax = 5;
    gmin = -5;
    cmax = 5;
end
if nargin < 3
    accstep = 1.5;
    v = 3;
    cstep = 1;
    gstep = 1;
    gmax = 5;
    gmin = -5;
    cmax = 5;
    cmin = -5;
end
% X:c Y:g cg:accuracy
[X,Y] = meshgrid(cmin:cstep:cmax,gmin:gstep:gmax);
[m,n] = size(X);
cg = zeros(m,n);
% record accuracy with different c & g,and find the best accuracy with the smallest c
bestc = 0;
bestg = 0;
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_data_labels, train_data, cmd);
        if cg(i,j) > bestacc
            bestacc = cg(i,j);
            bestc = basenum^X(i,j);
            bestg = basenum^Y(i,j);
        end
        if ( cg(i,j) == bestacc && bestc > basenum^X(i,j) )
            bestacc = cg(i,j);
            bestc = basenum^X(i,j);
            bestg = basenum^Y(i,j);
        end
    end
end
% draw the accuracy with different c & g
figure;
[C,h] = contour(X,Y,cg,60:accstep:100);
clabel(C,h,'FontSize',20,'Color','r');
xlabel('log2c','FontSize',20);
ylabel('log2g','FontSize',20);
title('参数选择结果图(grid search)','FontSize',10);
grid on;

end

另外,我的参数选择结果图也没有内容,不知道是什么原因?是因为准确率太低吗?下面是我的2个数据,拜托了!!!

[ Last edited by jjdg on 2017-7-8 at 17:25 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zgyzhp

新虫 (初入文坛)

上面的笑脸是:,不知道怎么变成这个了,更正一下,上面3行带笑脸的分别是
train_data=[data(1:57,:];  
test_data=[data(58:71,:];  
test_data=[data(58:71,:];
不要沉
2楼2017-07-07 21:26:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zgyzhp

新虫 (初入文坛)

求大神帮忙!!!!!!
3楼2017-07-08 14:00:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

somomo91

专家顾问 (职业作家)

引用回帖:
2楼: Originally posted by zgyzhp at 2017-07-07 21:26:34
上面的笑脸是:,不知道怎么变成这个了,更正一下,上面3行带笑脸的分别是
train_data=;  
test_data=;  
test_data=;
不要沉

你把数据编辑掉了,没法下载数据
4楼2017-07-09 20:33:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zgyzhp 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[论文投稿] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 G6APbkg8SA6w 2026-08-29 3/150 2026-08-30 02:33 by ZPa0EcMwuECS
[博后之家] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +4 gy1nBQXYQJqL 2026-08-29 6/300 2026-08-30 01:36 by ZPa0EcMwuECS
[论文投稿] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +4 gy1nBQXYQJqL 2026-08-29 6/300 2026-08-30 01:25 by ZPa0EcMwuECS
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +5 ASdOkHsho7FD 2026-08-28 6/300 2026-08-30 01:03 by ZPa0EcMwuECS
[论文投稿] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +4 ASdOkHsho7FD 2026-08-28 5/250 2026-08-30 00:41 by ZPa0EcMwuECS
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +6 ASdOkHsho7FD 2026-08-28 12/600 2026-08-30 00:31 by ZPa0EcMwuECS
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 jCd0dEvKHShX 2026-08-29 3/150 2026-08-29 23:14 by ZPa0EcMwuECS
[基金申请] 中青基了要发朋友圈吗? +4 349506619 2026-08-28 4/200 2026-08-29 22:41 by alongwaytogo
[基金申请] 国社科申报系统有变化 +3 kynobel 2026-08-23 3/150 2026-08-29 21:57 by 余韵清
[基金申请] 有没有仍没收到信息的 +5 德尚中行 2026-08-27 6/300 2026-08-29 18:10 by manplx
[基金申请] 麻烦专家们看看评委们的意见(F口面上) +5 gdd2018 2026-08-28 10/500 2026-08-29 14:10 by Jacob678
[基金申请] 国自然评审意见 +13 wangmingqi 2026-08-28 19/950 2026-08-29 10:22 by Poppy1104
[基金申请] 我就是申请一个面上项目而已,这评审意见是按照杰青的条件评的吧? +6 gouxfjh 2026-08-28 9/450 2026-08-29 09:59 by jklily
[教师之家] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +4 ASdOkHsho7FD 2026-08-28 7/350 2026-08-29 09:26 by G6APbkg8SA6w
[基金申请] 面上合作单位盖章 +5 ssyjh 2026-08-27 5/250 2026-08-27 20:50 by gdfollow
[基金申请] 为什么 国际(地区)合作与交流项目 没有放榜? 10+3 majunge000 2026-08-26 11/550 2026-08-27 08:42 by 北京莱茵编辑
[基金申请] 2026年8月25日国自然放榜前突然收到列入评审专家邮件,有关系吗? +25 木水思豆 2026-08-25 28/1400 2026-08-26 14:53 by draco1987
[基金申请] 能否退出参与的面上项目解除限项 +23 koalala 2026-08-24 26/1300 2026-08-26 14:29 by 宝贝虫子
[基金申请] 国合现在查不到了吗? +10 chengyan1220 2026-08-24 20/1000 2026-08-26 08:57 by peasantsprig
[基金申请] 如果此刻你正在为国基感到焦虑,不妨来听听这首《基金之外》 +8 scalable 2026-08-24 8/400 2026-08-25 12:52 by jnhyjjm
信息提示
请填处理意见