clear; clc;close all;
% 五输入:5*39
% 一输出:1*39
% 回归预测
data=xlsread('data.xlsx','Sheet3','A2:G40');
%%
%***********************************************SVR**********************************%
%归一化
data_1 = data(:,1);
data_2 = data(:,2);
data_3 = data(:,3);
data_4 = data(:,4);
data_5 = data(:,5);
data_6 = data(:,6:7);
[data_1,ps0] = mapminmax(data_1',0,1);
[data_2,ps1] = mapminmax(data_2',0,1);
[data_6,ps6] = mapminmax(data_6',0,1);
data_1 = data_1';
data_2 = data_2';
data_6 = data_6';
%数据集
data_train_in(:,1) = data_1(1:30);% x1
data_train_in(:,2) = data_2(1:30);% x2
data_train_in(:,3) = data_3(1:30);% x3
data_train_in(:,4) = data_4(1:30);% x4
data_train_in(:,5) = data_5(1:30);% x5
data_train_out(:,1) = data_6(1:30,1);% y1
data_train_out(:,2) = data_6(1:30,2);% y2
data_test_in(:,1) = data_1(31:39);
data_test_in(:,2) = data_2(31:39);
data_test_in(:,3) = data_3(31:39);
data_test_in(:,4) = data_4(31:39);
data_test_in(:,5) = data_5(31:39);
data_test_out(:,1) = data_6(31:39,1)';
data_test_out(:,2) = data_6(31:39,1)';
%建立回归模型
[bestmse,bestc,bestg] = SVMcgForRegress(data_train_out,data_train_in,-2,2,-2,2,3,0.1,0.1);%cmin,cmax,gmin,gmax,v,cstep,gstep,msestep
% [bestmse,bestc,bestg] = gaSVMcgForRegress(data_train_out,data_train_in);
% pso_option = struct('c1',1.5,'c2',1.7,'maxgen',200,'sizepop',20, ...
% 'k',0.6,'wV',1,'wP',1,'v',5, ...
% 'popcmax',2^2,'popcmin',10^(-1),'popgmax',2^2,'popgmin',10^(-2));
% [bestmse,bestc,bestg] = psoSVMcgForRegress(data_train_out,data_train_in,pso_option);
cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg),' -s 3 -t 2 -p 0.01'];
%%%%% -c 惩罚系数,默认1
%%%%% -g 核函数参数,默认1/K,K为特征数
%%%%% -s SVM类型 0 - C-SVC 1 - V-SVC 2 - One-Class-SVM 3 - e-SVR 4 - n-SVR
%%%%% -t 核函数类型 0 - 线性核 1 - 多项式核 2 - RBF核 3 - Sigmoid核
%%%%% -p 损失函数参数,默认0.1
%%%%% -v 交叉验证参数,默认3
model = svmtrain(data_train_out,data_train_in,cmd);
%预测
for i=1:2
[ptesty(:,i),mse,prob] = svmpredict(data_test_out(:,i),data_test_in,model);%mse:均方误差和相关系数
end
data_test_out = data_test_out';
data_test_out = mapminmax('reverse',data_test_out,ps6);%去归一化
ptesty = ptesty';
ptesty = mapminmax('reverse',ptesty,ps6);%去归一化
figure;
subplot(121)
plot(data_test_out(1,:));
hold on;
plot(ptesty(1,:));
legend('实际值','预测值')
subplot(122)
plot(data_test_out(2,:));
hold on;
plot(ptesty(2,:));
legend('实际值','预测值')
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
SVM多输入单输出、多输出.rar (3个子文件)
SVM多输入单输出、多输出
svm_svr_.m 2KB
data.xlsx 20KB
svm_svr.m 2KB
共 3 条
- 1
资源评论
- 南国北顾百里登风2023-09-14SVMcgForRegress这个函数缺失了,无法运行,不要下载
杨铮...
- 粉丝: 168
- 资源: 258
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功