SVM 训练--在训练集上acc为94% 在测试集上为70%

用SVM 训练的时候:

出现的问题是:
Error: specified nu is infeasible

带有下标的赋值维度不匹配。

百度到的答案:赋值维度不匹配。。。说明等号两边的大小不一致,导致的  我也碰到了这个问题

出错的位置在 SVMngForClass (line 34)
        cg(i,j) = svmtrain(train_label, train, cmd);

出错 Untitled3 (line 33)
[bestCVaccuracy,bestc,bestg]= SVMngForClass(double(Train_label),double(Feature_train_norm));

实际的情况可能是:

在使用SVMngForClass打网格训练的时候:

if nargin < 5
    gmax = 8;
    gmin = -8;
end
if nargin < 3
    nmax = -1;
    nmin = -5;
end

nmax 的取值范围默认是 nmax=0;改成nmax=-1 之后,暂时没有出现这个问题

固定某一个参数,比如说我们固定m。

那么随着n 的变化,我们可以看到acc 的精度是先变大 后变小。---看上去正常哈。

早晨来的时候发现:

昨天在训练集中交叉验证得到的比较高的acc,但是在测试的时候 精度只有70% 

这个原因出现在哪里。

应该是这么理解 在训练集上效果好,在测试集上效果差,应该是model 的泛化能力太差。

在所有的数据集上去训练,得到最好的acc 为88% 但是在测试集上有76%  

这该怎么办:

1. 样本不均衡

总的样本为:8099 

neg 样本为:1211

pos 样本为:6888

2. 样本噪音比较大(特别是V0 的版本)

有些样本是在很小 比如 2*9 的

3.泛华能力差。 我训一个感觉好的就给BK 老师吧。

感觉还是需要实际的样本会好一些。


评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值