基于最小二乘支持向量机(LSSVM)的数据回归预测

 代码原理

基于最小二乘支持向量机(LSSVM)的数据回归预测,其简单原理和流程可以总结如下:

数据准备:

  • 获取带有标签的训练数据集,包括输入特征和对应的输出值。

模型选择:

  • 选择使用支持向量机(SVM)进行回归任务,其中采用了最小二乘法(Least Squares)来优化模型。

模型构建:

  • 将回归问题转化为一个优化问题,寻找最优的超平面(在高维空间中的超平面,对应于低维空间中的曲线或曲面),使得预测值与真实值之间的误差最小化。

核函数选择:

  • SVM在处理非线性问题时,通常采用核函数来映射输入空间到更高维的特征空间。常用的核函数包括线性核、多项式核和径向基函数(RBF)核,选择适合数据特性的核函数。

模型训练:

  • 通过求解优化问题,找到最佳的超平面和相关的支持向量,以最小化损失函数(通常为误差的平方和)。

预测:

  • 使用训练好的模型对新的未见过的数据进行预测。通过模型得到的超平面,计算输入特征对应的输出值。

总结来说,LSSVM将最小二乘法与支持向量机相结合,通过寻找最优超平面来进行回归预测,其流程包括数据准备、模型选择、模型构建、核函数选择、模型训练和预测步骤。

部分代码

%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc  
addpath(genpath(pwd));
%% 导入数据
data =  readmatrix('回归数据集.xlsx');
data = data(:,1:14);
res=data(randperm(size(data,1)),:);    %此行代码用于打乱原始样本,使训练集测试集随机被抽取,有助于更新预测结果。
num_samples = size(res,1);   %样本个数
% 训练集和测试集划分
outdim = 1;                                  % 最后一列为输出
num_size = 0.7;                              % 训练集占数据集比例
num_train_s = round(num_size * num_samples); % 训练集样本个数
f_ = size(res, 2) - outdim;                  % 输入特征维度
P_train = res(1: num_train_s, 1: f_)';
T_train = res(1: num_train_s, f_ + 1: end)';
M = size(P_train, 2);
P_test = res(num_train_s + 1: end, 1: f_)';
T_test = res(num_train_s + 1: end, f_ + 1: end)';
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);
%随机设定gam和sig2的值
gam = 25;
sig2 = 180;
tic
model = initlssvm(p_train',t_train','f',[],[],'RBF_kernel');
%实现多分类,要对下列参数进行设置!
model.code = 'changed';
model.codetype = 'code_OneVsOne';
model.gam = gam*ones(1,45);  %这里的45是原始LSSVM在寻优gam和kernel_pars时,自己设定的参数,这个可以不必在意!
model.kernel_pars = sig2*ones(1,45);
model = trainlssvm(model);
toc
t_sim1 = simlssvm(model,p_train');
t_sim2 = simlssvm(model,p_test');
%  数据反归一化
T_sim1 = mapminmax('reverse', t_sim1, ps_output);
T_sim2 = mapminmax('reverse', t_sim2, ps_output);
T_train1 = T_train;
T_test2 = T_test;
rmpath(genpath(pwd));

代码效果图

获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复数据回归预测本公众号致力于解决找代码难,写代码怵。各位有什么急需的代码,欢迎后台留言~不定时更新科研技巧类推文,可以一起探讨科研,写作,文献,代码等诸多学术问题,我们一起进步。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 17:50:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 17:50:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 17:50:02       45 阅读
  4. Python语言-面向对象

    2024-07-22 17:50:02       55 阅读

热门阅读

  1. 鸿蒙笔记--存储

    2024-07-22 17:50:02       16 阅读
  2. Github订阅地址

    2024-07-22 17:50:02       15 阅读
  3. Qt:愚蠢的qmake

    2024-07-22 17:50:02       21 阅读
  4. 《设计模式之美》读书笔记2

    2024-07-22 17:50:02       16 阅读
  5. Seata 面试题及答案整理,最新面试题

    2024-07-22 17:50:02       19 阅读
  6. Linux 防火墙配置【iptable,firewalld,ufw】

    2024-07-22 17:50:02       17 阅读
  7. Redisson内置延迟队列RDelayedQueue

    2024-07-22 17:50:02       17 阅读
  8. MYSQL设计和开发规范(简易版)

    2024-07-22 17:50:02       18 阅读
  9. 解决MySQL中LIMIT大偏移量加载慢的问题

    2024-07-22 17:50:02       15 阅读