请教Matlab中SVM回归预测问题

2024-05-13 02:28

1. 请教Matlab中SVM回归预测问题

en . -s 3是回归模型:

-s svm_type : set type of SVM (default 0)
        0 -- C-SVC
        1 -- nu-SVC
        2 -- one-class SVM
        3 -- epsilon-SVR
        4 -- nu-SVR

==============
libsvm_options:
-s svm_type : set type of SVM (default 0)
        0 -- C-SVC
        1 -- nu-SVC
        2 -- one-class SVM
        3 -- epsilon-SVR
        4 -- nu-SVR
-t kernel_type : set type of kernel function (default 2)
        0 -- linear: u'*v
        1 -- polynomial: (gamma*u'*v + coef0)^degree
        2 -- radial basis function: exp(-gamma*|u-v|^2)
        3 -- sigmoid: tanh(gamma*u'*v + coef0)
        4 -- precomputed kernel (kernel values in training_instance_matrix)
-d degree : set degree in kernel function (default 3)
-g gamma : set gamma in kernel function (default 1/k)
-r coef0 : set coef0 in kernel function (default 0)
-c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)
-n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)
-p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)
-m cachesize : set cache memory size in MB (default 100)
-e epsilon : set tolerance of termination criterion (default 0.001)
-h shrinking: whether to use the shrinking heuristics, 0 or 1 (default 1)
-b probability_estimates: whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0)
-wi weight: set the parameter C of class i to weight*C, for C-SVC (default 1)
-v n: n-fold cross validation mode

请教Matlab中SVM回归预测问题

2. Matlab用SVM回归后,怎么通过model得到表达式

)提出了独立同分布应力串联、并联系统,独立同分布抗力串联、并联系统可靠性分析的当量指数方法 
研究了跳跃度独立同分布的阶梯过程模型,给出两个独立的阶梯过程之和的单位时间平均跳跃次数和跳跃度分布函数的计算式,给出阶梯过程上确界的分布函数、密度函数、均值、标准差的近似计算的方法和程序,给出模拟阶梯过程的方法和程序!

3. 关于libsvm回归预测的问题,基于matlab

你在train和test相同的数据吗?

看你的情况应该是你最后一行的数据和其他数据的数量级差了很多吧。

关于libsvm回归预测的问题,基于matlab

4. 求一用MATLAB 语言编写的SVM回归程序,谢谢

拉格朗日
function y=lagrange(x0,y0,x)
n=length(x0);m=length(x);
for i=1:m
 z=x(i);
 s=0.0;
 for k=1:n
 p=1.0;
 for j=1:n
 if j~=k
 p=p*(z-x0(j))/(x0(k)-x0(j));
 end
 end
 s=p*y0(k)+s;
 end
 y(i)=s;
end
SOR迭代法的Matlab程序 
function [x]=SOR_iterative(A,b)
% 用SOR迭代求解线性方程组,矩阵A是方阵
 x0=zeros(1,length(b)); % 赋初值
 tol=10^(-2); % 给定误差界
 N=1000; % 给定最大迭代次数
 [n,n]=size(A); % 确定矩阵A的阶
 w=1; % 给定松弛因子
 k=1;
 % 迭代过程
 while k=N
 x(1)=(b(1)-A(1,2:n)*x0(2:n)')/A(1,1);
 for i=2:n
 x(i)=(1-w)*x0(i)+w*(b(i)-A(i,1:i-1)*x(1:i-1)'-A(i,i+1:n)*x0(i+1:n)')/A(i,i);
 end
 if max(abs(x-x0))=tol
 fid = fopen('SOR_iter_result.txt', 'wt');
 fprintf(fid,'\n********用SOR迭代求解线性方程组的输出结果********\n\n');
 fprintf(fid,'迭代次数: %d次\n\n',k);
 fprintf(fid,'x的值\n\n');
 fprintf(fid, '%12.8f \n', x);
 break;
 end
 k=k+1;
 x0=x;
 end
 if k==N+1
 fid = fopen('SOR_iter_result.txt', 'wt');
 fprintf(fid,'\n********用SOR迭代求解线性方程组的输出结果********\n\n');
 fprintf(fid,'迭代次数: %d次\n\n',k);
 fprintf(fid,'超过最大迭代次数,求解失败!');
 fclose(fid);
 end 
Matlab中龙格-库塔(Runge-Kutta)方法原理及实现龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法。由于此算法精度高,采取措施对误差进行抑制,所以其实现原理也较复杂。该算法是构建在数学支持的基础之上的。龙格库塔方法的理论基础来源于泰勒公式和使用斜率近似表达微分,它在积分区间多预计算出几个点的斜率,然后进行加权平均,用做下一点的依据,从而构造出了精度更高的数值积分计算方法。如果预先求两个点的斜率就是二阶龙格库塔法,如果预先取四个点就是四阶龙格库塔法。一阶常微分方程可以写作:y'=f(x,y),使用差分概念。
(Yn+1-Yn)/h= f(Xn,Yn)推出(近似等于,极限为Yn')
Yn+1=Yn+h*f(Xn,Yn)
另外根据微分中值定理,存在0t1,使得
Yn+1=Yn+h*f(Xn+th,Y(Xn+th))
这里K=f(Xn+th,Y(Xn+th))称为平均斜率,龙格库塔方法就是求得K的一种算法。
利用这样的原理,经过复杂的数学推导(过于繁琐省略),可以得出截断误差为O(h^5)的四阶龙格库塔公式:
K1=f(Xn,Yn);
K2=f(Xn+h/2,Yn+(h/2)*K1);
K3=f(Xn+h/2,Yn+(h/2)*K2);
K4=f(Xn+h,Yn+h*K3);
Yn+1=Yn+h*(K1+2K2+2K3+K4)*(1/6);
所以,为了更好更准确地把握时间关系,应自己在理解龙格库塔原理的基础上,编写定步长的龙格库塔函数,经过学习其原理,已经完成了一维的龙格库塔函数。
仔细思考之后,发现其实如果是需要解多个微分方程组,可以想象成多个微分方程并行进行求解,时间,步长都是共同的,首先把预定的初始值给每个微分方程的第一步,然后每走一步,对多个微分方程共同求解。想通之后发现,整个过程其实很直观,只是不停的逼近计算罢了。编写的定步长的龙格库塔计算函数:
function [x,y]=runge_kutta1(ufunc,y0,h,a,b)%参数表顺序依次是微分方程组的函数名称,初始值向量,步长,时间起点,时间终点(参数形式参考了ode45函数)
n=floor((b-a)/h);%求步数
x(1)=a;%时间起点
y(:,1)=y0;%赋初值,可以是向量,但是要注意维数
for ii=1:n
x(ii+1)=x(ii)+h;
k1=ufunc(x(ii),y(:,ii));
k2=ufunc(x(ii)+h/2,y(:,ii)+h*k1/2);
k3=ufunc(x(ii)+h/2,y(:,ii)+h*k2/2);
k4=ufunc(x(ii)+h,y(:,ii)+h*k3);
y(:,ii+1)=y(:,ii)+h*(k1+2*k2+2*k3+k4)/6;
%按照龙格库塔方法进行数值求解
end
调用的子函数以及其调用语句:
function dy=test_fun(x,y)
dy = zeros(3,1);%初始化列向量
dy(1) = y(2) * y(3);
dy(2) = -y(1) + y(3);
dy(3) = -0.51 * y(1) * y(2);
对该微分方程组用ode45和自编的龙格库塔函数进行比较,调用如下:
[T,F] = ode45(@test_fun,[0 15],[1 1 3]);
subplot(121)
plot(T,F)%Matlab自带的ode45函数效果
title('ode45函数效果')
[T1,F1]=runge_kutta1(@test_fun,[1 1 3],0.25,0,15);%测试时改变test_fun的函数维数,别忘记改变初始值的维数
subplot(122)
plot(T1,F1)%自编的龙格库塔函数效果
title('自编的 龙格库塔函数')

5. matlab,svm错误

训练样本标签和训练样本数不一致,你可以看一下label的个数和data的个数,而且svm适用于两维变量,所以你的data的维数需要改变一下。

matlab,svm错误

6. 如何用Matlab做支持向量回归机预测

matlab 支持向量机只能是单输出,输入的数目没有限制,如果是多输出的话,你可以针对每个输出分别建立一个支持向量机,然后分别对应每个输出进行预测。 这样就相当于是多输入多输出了

7. Matlab中libsvm回归怎么做时间序列的单步和多步预测

您好,很高兴为您解答。

a(1)=0;for i=2:220  a(i)=0.6*a(i-1)+randn;endtrain_t = 1:200;train = a(train_t);train_t = train_t';train = train';test_t = 1:203;test=a(test_t);test_t = test_t';test = test';[bestmse,bestc,bestg] = SVMcgForRegress(train,train_t,-3,11,-7,1,3,0.5,0.5,0.1);cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg),' -p 0.01 -s 3'];model = svmtrain(train,train_t,cmd);[trainpre,trainmse] = svmpredict(train,train_t,model);figure;hold on;plot(train);plot(trainpre,'r');title('原来的训练数据的拟合1-200');legend('原来的训练数据','训练数据预测拟合数据');hold off[testpre,testmse] = svmpredict(test,test_t,model);figure;hold on;plot(test);plot(testpre,'r');title('测试数据的预测1-203');legend('测试数据','测试数据预测拟合数据');hold off如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】希望我的回答对您有所帮助,望采纳!                                                                                                                             ~ O(∩_∩)O~

Matlab中libsvm回归怎么做时间序列的单步和多步预测

8. 支持向量机SVM做回归预测的时候,模型已经训练好了,预测没有标签值的数据,该怎么做呢(Matlab)

请问您现在知道了吗?谢谢