使用Matlab fitcsvm对一类和一个特征的SVM给出了过度拟合的结果

使用Matlab fitcsvm对一类和一个特征的SVM给出了过度拟合的结果,matlab,svm,Matlab,Svm,我试图以最简单的方式使用支持向量机对目标类别(类别1)进行分类,该类别的值范围大于某些类别,小于其他非目标类别(类别0)。然而,我拟合的模型太复杂了,没有给我两个支持向量,导致类别之间的分离很差。我假设模型尺寸过多,因此严重过度拟合。我试着改变“KernelScale”,但事实并非如此。你知道我怎样才能使模型更简单吗 n0 = normrnd(0,1,300,1); n1 = normrnd(1,1,300,1); n2 = normrnd(2,1,300,1); val = [n0;n1;n

我试图以最简单的方式使用支持向量机对目标类别(类别1)进行分类,该类别的值范围大于某些类别,小于其他非目标类别(类别0)。然而,我拟合的模型太复杂了,没有给我两个支持向量,导致类别之间的分离很差。我假设模型尺寸过多,因此严重过度拟合。我试着改变“KernelScale”,但事实并非如此。你知道我怎样才能使模型更简单吗

n0 = normrnd(0,1,300,1);
n1 = normrnd(1,1,300,1);
n2 = normrnd(2,1,300,1);

val = [n0;n1;n2];
lbl = [zeros(300,1);ones(300,1);zeros(300,1)];

d = fitcsvm(val, cellstr(str(lbl))','KernelScale', 'auto','KernelFunction','gaussian');
pred = ismember(d.predict(val),'1');
figure;
plot([1:300,601:900],val([1:300,601:900]),'.b')
hold on;
plot(301:600,val(301:600),'.r')
plot(find(pred),val(pred),'og')
legend('class 0','class 1','predicted class 1','location','southeast')