粒子群算法PSO优化支持向量机(PSO-SVM)的数据回归预测 matlab代码

粒子群算法PSO优化支持向量机(PSO-SVM)的数据回归预测 matlab代码_第1张图片

%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行
tic
%%  导入数据
P_train = xlsread('data','training set','B2:G191')';
T_train= xlsread('data','training set','H2:H191')';
% 测试集——44个样本
P_test=xlsread('data','test set','B2:G45')';
T_test=xlsread('data','test set','H2:H45')';

%%  划分训练集和测试集
M = size(P_train, 2);
N = size(P_test, 2);
%%  数据归一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test = mapminmax('apply', P_test, ps_input);

[t_train, ps_output] = mapminmax(T_train, 0, 1);
t_test = mapminmax('apply', T_test, ps_output);

%%  转置以适应模型
p_train = p_train'; p_test = p_test';
t_train = t_train'; t_test = t_test';

%%  参数设置
fun = @getObjValue;    % 目标函数
dim = 2;               % 优化参数个数
lb  = [0.01, 0.01];    % 优化参数目标下限
ub  = [ 100,  100];    % 优化参数目标上限
pop = 10;              % 种群数量
Max_iteration = 20;   % 最大迭代次数   

%%  优化算法
[Best_score,Best_pos, curve] = PSO(pop, Max_iteration, lb, ub, dim, fun); 

%%  获取最优参数
bestc = Best_pos(1, 1);  
bestg = Best_pos(1, 2); 

%%  建立模型
cmd = [' -t 2 ', ' -c ', num2str(bestc), ' -g ', num2str(bestg), ' -s 3 -p 0.01 '];
model = svmtrain(t_train, p_train, cmd);

 

你可能感兴趣的:(人工智能)