Quero usar o Support Vector Machine (SVM) para fazer previsões. E com eu escrevi o código a seguir usando a função matlab fitrsvm
e predict
,
tb = table(x,y)
Mdl = fitrsvm(tb,'y','KernelFunction','gaussian')
YFit = predict(Mdl,tb);
scatter(x,y);
hold on
plot(x,YFit,'r.')
A saída que estou obtendo .
Aqui, blude é o teste de valores ( tb
) e o vermelho é a previsão usando SVM. Como você pode ver claramente, essa previsão está errada. Alguém poderia me indicar alguma forma de melhorar a previsão perto dos valores medidos?
você deve usar a função Kernel como RBF ou gaussian e assim por diante.
o kernel padrão do SVM é K (xi, xj) = xi*xj
e é um kernel linear. Claro, você só pode obter um resultado de regressão linear.
Código como
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.')
========================================================== =======================
Quanto à precisão do resultado, depende de muitos fatores como o tipo de kernel, o ajuste do coeficiente de punição ou qualquer outra coisa, normalmente precisa de tempos para ajustar os parâmetros. a validação cruzada pode ajudá-lo a encontrar um bom conjunto de parâmetros
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras