matlab libsvm预测时间序列,svm时间序列预测问题

clc

clear

close all

%% 加载数据

load Speed.mat;

iGroupLen = 16;

iPredictLen = 16;

% 分组

iTotalLen = length(Speed);

vSpeed = Speed(400:1200);

iLen = length(vSpeed);

if iLen-iTotalLen >= 0

return;

end

if iLen+iPredictLen

vReal = Speed(iLen+1:iLen+iPredictLen);

else

vReal = Speed(iLen+1:iTotalLen);

end

iRealLen = length(vReal);

for iCount=1:iLen-iGroupLen

mGroup(iCount,1:iGroupLen) = vSpeed(iCount:iGroupLen+iCount-1);

mGroup(iCount,iGroupLen+1) = vSpeed(iGroupLen+iCount);

end

% 归一化

iMax = max(vSpeed);

iMin = min(vSpeed);

iSub = iMax-iMin;

vSpeed = (vSpeed(:,1)-iMin)/iSub;

vRealNormal = (vReal(:,1)-iMin)/iSub;

mFeature = mGroup(:,1:iGroupLen);

mTarget =  mGroup(:,iGroupLen+1);

vStart = vSpeed(iCount:iGroupLen+iCount-1);

%% 训练

% 1、准备,训练样本和测试样本,模型初始化

type = 'function estimation';

kernel = 'RBF_kernel';

gam = 100;                 % Regularization parameter

sig2 = 0.01;               % Kernel parameter (bandwidth in the case of the 'RBF_kernel'

mX = mFeature;

vY = mTarget;

model = initlssvm(mX,vY,type,gam,sig2,kernel);

%2 参数寻优

costfun = 'crossvalidatelssvm';

costfun_args = {10,'mse'};

optfun = 'gridsearch';

model = tunelssvm(model,optfun,costfun,costfun_args);   % 模型参数优化

% load speedmodel.mat;

%% 预测

vPredict = [];

for iCount = 1:iRealLen

model = trainlssvm(model);

iReturn = simlssvm(model,vStart');

vPredict(iCount,1) = iReturn;

vStart = [vStart(2:iGroupLen); iReturn];

%     vRealNormal(iCount,1)

%     vStart = [vStart(2:iGroupLen); vRealNormal(iCount,1)];

end

反归一

vPredict(:,1).*iSub+ones(iRealLen,1)*iMin;

%统计计算结果

iAbs = abs(vReal-vPredict);

mResult = [vReal vPredict iAbs iAbs./vReal];

iAd = sum(mResult(:,4))/length(vReal);

%% 5 显示预测结果

plot(mResult(:,1:2));

xlabel('时间点(10min/次)','FontWeight', 'bold');

ylabel('功率(kw)','FontWeight', 'bold');

legend('预测风速','实际风速');

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值