我想使用支持向量机(SVM)进行预测。我使用matlab函数fitrsvm
和predict
,
tb = table(x,y)
Mdl = fitrsvm(tb,'y','KernelFunction','gaussian')
YFit = predict(Mdl,tb);
scatter(x,y);
hold on
plot(x,YFit,'r.')
我得到的输出
这里包括测试值(tb
),红色是使用SVM进行预测。你可以清楚地看到这种预测是错误的。谁能告诉我任何方法来改善接近测量值的预测?
答案 0 :(得分:3)
SVM的默认内核是K(xi,xj)= xi*xj
,它是一个线性内核。当然,你只能获得线性回归结果。
代码
x = 0:0.01:5 ;
y = sin(x)+rand(1, length(x)) ;
x = x' ;
y = y' ;
tb = table(x,y) ;
Mdl = fitrsvm(tb,'y','KernelFunction','gaussian');
YFit = predict(Mdl,tb);
scatter(x,y);
hold on
plot(x,YFit,'r.')
=============================================== ========================
至于结果的准确性,它取决于许多因素,如核的类型,惩罚系数调整或其他,它通常需要时间来调整参数。交叉验证可以帮助您找到一组好的参数