欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

GWO-LSSVM 灰狼算法优化最小二乘支持向量机的 Matlab 实现 数据分类预测

最编程 2024-04-14 15:33:36
...
%% 清空环境变量 warning off % 关闭报警信息 close all % 关闭开启的图窗 clear % 清空变量 clc % 清空命令行 %% 导入数据 res = xlsread('数据集.xlsx'); %% 划分训练集和测试集% P_train = res(1: 250, 1: 12)'; T_train = res(1: 250, 13)'; M = size(P_train, 2); P_test = res(251: end, 1: 12)'; T_test = res(251: end, 13)'; N = size(P_test, 2); %% 数据归一化 [p_train, ps_input] = mapminmax(P_train,0,1); p_test = mapminmax('apply',P_test,ps_input); t_train = T_train; t_test = T_test; %% LS参数设置 type = 'c'; % 模型类型 分类 kernel_type = 'RBF_kernel'; % 线性核函数 codefct = 'code_OneVsOne'; % 一对一编码分类 fun = @getObjValue; % 目标函数 dim = 2; % 优化参数个数 ub = [300, 300]; % 优化参数目标上限 lb = [1, 1]; % 优化参数目标下限 pop = 8; % 数量 Max_iteration = 20; % 最大迭代次数 c = Best_pos(1); g = Best_pos(2); %% 编码 [t_train,codebook,old_codebook] = code(t_train,codefct); %% 建立模型 model = initlssvm(p_train,t_train,type,c,g,kernel_type,codefct); %SSA %% 训练模型 model = trainlssvm(model); %% 测试模型 t_sim1 = simlssvm(model,p_train); t_sim2 = simlssvm(model,p_test); T_sim1 = T_sim1(index_1); T_sim2 = T_sim2(index_2); %% 性能评价 error1 = sum((T_sim1' == T_train))/M * 100 ; error2 = sum((T_sim2' == T_test))/N * 100 ; %% 优化曲线 figure plot(curve, 'linewidth',1.5); title('GWO-LSSVM') xlabel('The number of iterations') ylabel('Fitness') grid on; %% 绘图 figure plot(1: M, T_train, 'r-*', 1: M, T_sim1, 'b-o', 'LineWidth', 1) legend('真实值', 'GWO-LSSVM预测值') xlabel('预测样本') ylabel('预测结果') string = {'训练集预测结果对比'; ['准确率=' num2str(error1) '%']}; title(string) xlim([1, M]) grid figure plot(1: N, T_test, 'r-*', 1: N, T_sim2, 'b-o', 'LineWidth', 1) legend('真实值', 'GWO-LSSVM预测值') xlabel('预测样本') ylabel('预测结果') string = {'测试集预测结果对比'; ['准确率=' num2str(error2) '%']}; title(string) xlim([1, N]) grid %% 混淆矩阵 figure cm = confusionchart(T_train, T_sim1); cm.Title = 'Confusion Matrix for Train Data'; cm.ColumnSummary = 'column-normalized'; cm.RowSummary = 'row-normalized'; figure cm = confusionchart(T_test, T_sim2); cm.Title = 'Confusion Matrix for Test Data'; cm.ColumnSummary = 'column-normalized'; cm.RowSummary = 'row-normalized';