用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 老师吧。
感觉还是需要实际的样本会好一些。