【MATLAB第52期】#源码分享

2023-11-09

【MATLAB第52期】#源码分享 | 基于MATLAB的高斯过程GPR超参数(sigma)自动优化算法 时间序列预测模型 五折交叉验证

后台私信回复“52期”即可免费获取数据及代码。

一、效果展示

在这里插入图片描述
在这里插入图片描述

二、优化思路

1.数据
一列时间序列数据 ,滑动窗口尺寸为15。
2.思路
使用GPR自动优化函数,对sigma进行自动寻优。
适应度值log(1+loss)。
迭代次数默认30.

三、代码展示

%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行

%%  导入数据(时间序列的单列数据)
result = xlsread('数据集.xlsx');

%%  数据分析
num_samples = length(result);  % 样本个数 
kim = 15;                      % 延时步长(kim个历史数据作为自变量)
zim =  1;                      % 跨zim个时间点进行预测

%%  构造数据集
for i = 1: num_samples - kim - zim + 1
    res(i, :) = [reshape(result(i: i + kim - 1), 1, kim), result(i + kim + zim - 1)];
end

%%  划分训练集和测试集
temp = 1: 1: 922;

P_train = res(temp(1: 700), 1: 15)';
T_train = res(temp(1: 700), 16)';
M = size(P_train, 2);

P_test = res(temp(701: end), 1: 15)';
T_test = res(temp(701: end), 16)';
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';

%训练模型  这个是模型参数 ,运行较好地结果 
gprMdl= fitrgp(p_train,t_train,'OptimizeHyperparameters','auto','HyperparameterOptimizationOptions',...
     struct('Optimizer','randomsearch'));%训练高斯过程模型 HyperparameterOptimizationOptions 五折交叉验证自动优化超参数sigma

%gprMdl = fitrgp(p_train,t_train,'Basis','None','KernelFunction','Exponential');
[t_sim1] = gprpre(gprMdl);
T_sim1=mapminmax('reverse',t_sim1, ps_output);%训练集拟合结果

[t_sim2,~,~] = predict(gprMdl,p_test);
T_sim2=mapminmax('reverse',t_sim2, ps_output);

%%  均方根误差
error1 = sqrt(sum((T_sim1' - T_train).^2) ./ M);
error2 = sqrt(sum((T_sim2' - T_test ).^2) ./ N);

%%  绘图
figure()
subplot(211)
plot(1: M, T_train, 'r-', 1: M, T_sim1, 'b-', 'LineWidth', 1)
legend('真实值','预测值')
xlabel('预测样本')
ylabel('预测结果')
string = {'优化后训练集预测结果对比'; ['RMSE=' num2str(error1)]};
title(string)
xlim([1, M])
grid

subplot(212)
plot(1: N, T_test, 'r-', 1: N, T_sim2, 'b-', 'LineWidth', 1)
legend('真实值','预测值')
xlabel('预测样本')
ylabel('预测结果')
string = {'优化后测试集预测结果对比';['RMSE=' num2str(error2)]};
title(string)
xlim([1, N])
grid


%%  相关指标计算
%  R2
R1 = 1 - norm(T_train - T_sim1')^2 / norm(T_train - mean(T_train))^2;
R2 = 1 - norm(T_test -  T_sim2')^2 / norm(T_test -  mean(T_test ))^2;

disp(['优化后训练集数据的R2为:', num2str(R1)])
disp(['优化后测试集数据的R2为:', num2str(R2)])

%  MAE
mae1 = sum(abs(T_sim1' - T_train)) ./ M ;
mae2 = sum(abs(T_sim2' - T_test )) ./ N ;

disp(['优化后训练集数据的MAE为:', num2str(mae1)])
disp(['优化后测试集数据的MAE为:', num2str(mae2)])

%  MBE
mbe1 = sum(T_sim1' - T_train) ./ M ;
mbe2 = sum(T_sim2' - T_test ) ./ N ;

disp(['优化后训练集数据的MBE为:', num2str(mbe1)])
disp(['优化后测试集数据的MBE为:', num2str(mbe2)])

%% 优化前 Sigma = 0.5
%gprMdl1 = fitrgp(p_train,t_train,'Basis','None','KernelFunction','Exponential');
[t_sim11] = gprpre(gprMdl1);
T_sim11=mapminmax('reverse',t_sim11, ps_output);%训练集拟合结果
L1 = resubLoss(gprMdl1)%损失函数

[t_sim22,~,~] = predict(gprMdl1,p_test);
T_sim22=mapminmax('reverse',t_sim22, ps_output);

%%  均方根误差
error11 = sqrt(sum((T_sim11' - T_train).^2) ./ M);
error22 = sqrt(sum((T_sim22' - T_test ).^2) ./ N);

%%  绘图
figure()
subplot(211)
plot(1: M, T_train, 'r-', 1: M, T_sim11, 'b-', 'LineWidth', 1)
legend('真实值','预测值')
xlabel('预测样本')
ylabel('预测结果')
string = {'优化前训练集预测结果对比'; ['RMSE=' num2str(error11)]};
title(string)
xlim([1, M])
grid

subplot(212)
plot(1: N, T_test, 'r-', 1: N, T_sim22, 'b-', 'LineWidth', 1)
legend('真实值','预测值')
xlabel('预测样本')
ylabel('预测结果')
string = {'优化前测试集预测结果对比';['RMSE=' num2str(error22)]};
title(string)
xlim([1, N])
grid



%%  相关指标计算
%  R2
R11 = 1 - norm(T_train - T_sim11')^2 / norm(T_train - mean(T_train))^2;
R22 = 1 - norm(T_test -  T_sim22')^2 / norm(T_test -  mean(T_test ))^2;

disp(['优化前训练集数据的R2为:', num2str(R11)])
disp(['优化前测试集数据的R2为:', num2str(R22)])

%  MAE
mae11 = sum(abs(T_sim11' - T_train)) ./ M ;
mae22 = sum(abs(T_sim22' - T_test )) ./ N ;

disp(['优化前训练集数据的MAE为:', num2str(mae11)])
disp(['优化前测试集数据的MAE为:', num2str(mae22)])

%  MBE
mbe11 = sum(T_sim11' - T_train) ./ M ;
mbe22 = sum(T_sim22' - T_test ) ./ N ;

disp(['优化前训练集数据的MBE为:', num2str(mbe11)])
disp(['优化前测试集数据的MBE为:', num2str(mbe22)])

四、代码免费获取

后台私信回复“52期”即可获取数据及代码下载链接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【MATLAB第52期】#源码分享 的相关文章

  • 在 3d 空间中的两个平面之间进行插值

    我正在开发一种工具 可以让您在 3D 体积 上圈出 包围事物 我想通过标记 切片 1 和 3 并从该信息 填充 切片 2 来节省时间 两个简单的解决方案是 1 slice2 slice1 AND slice3 gets the overla
  • 如何在Matlab中自定义轮廓线?

    我正在准备一个等高线图 我应该在其中突出显示特定级别的等高线 例如 我的轮廓线值位于 1 和 1 之间 我想突出显示与值 0 相对应的线 我尝试使用以下过程来执行此操作 M c contourf longitude latitude del
  • 扩展 MATLAB 函数名称的最大长度

    我编写了一个 MATLAB 程序 可以动态创建自定义 MATLAB 函数 并使用以下命令在其他 MATLAB 实例中启动它们unix命令 我使用这个程序来自动化 fMRI 神经影像分析 使用 SPM8 for MATLAB 一切正常 但是
  • Python 函数句柄 ala Matlab

    在 MATLAB 中可以创建function handles http www mathworks co uk help techdoc ref function handle html与类似的东西 myfun arglist body 这
  • 在 matlab 中求 3d 峰的体积

    现在我有一个带有峰值的 3D 散点图 我需要找到其体积 我的数据来自图像 因此 x 和 y 值表示 xy 平面上的像素位置 z 值是每个像素的像素值 这是我的散点图 scatter3 x y z 20 z filled 我试图找到数据峰值的
  • 不等间隔时间序列的移动平均线

    我有一个证券交易所股票价格的数据集 时间 价格 但数据点之间的间隔并不相等 从 1 到 2 分钟不等 在这种情况下计算移动平均值的最佳实践是什么 如何在Matlab中实现呢 我倾向于认为 点的权重应该取决于自上一个点以来的最后时间间隔 Ma
  • MATLAB - 如何将子图一起缩放?

    我在一张图中有多个子图 每个图的 X 轴是相同的变量 时间 每个图上的 Y 轴都不同 无论是它所代表的内容还是数据的大小 我想要一种同时放大所有图的时间尺度的方法 理想情况下 可以在其中一张图上使用矩形缩放工具 并让其他图相应地更改其 X
  • 如何在没有安装Visual Studio的另一台机器上使用Visual Studio生成的dll?

    我已经在 Visual Studio 2012 中生成了动态库 我想在另一台机器上使用该库 但我不想在远程机器上安装 Visual Studio 我有 mex 库和 dll 我想运行一个使用这两个库的脚本 当我运行脚本时 出现以下错误 缺少
  • 两个向量之间的欧氏距离(单行矩阵)

    我有两个向量 单行矩阵 假设我们已经知道长度len A x1 x2 x3 x4 x5 B y1 y2 y3 y4 y5 计算它们之间的欧几里德距离最快的方法是什么 我的第一次尝试是 diff A B sum 0 for column 1 l
  • 使用符号求解器仅求解某些变量

    我正在尝试在 MATLAB 中求解包含 3 个变量和 5 个常量的方程组 是否可以使用solve求解三个变量 同时保持常量为符号而不用数值替换它们 当您使用SOLVE http www mathworks com access helpde
  • 如何告诉 mex 链接到 /usr/lib 中的 libstdc++.so.6 而不是 MATLAB 目录中的 libstdc++.so.6?

    现在 MATLAB 2012a 中的 mex 仅正式支持 gcc 4 4 6 但我想使用 gcc 4 7 风险自负 现在如果我直接用 mex 编译一些东西 它会抱怨 usr lib gcc i686 linux gnu 4 7 cc1plu
  • matlab中类库的全局变量

    我有一些matlab声明的类 我如何声明所有类中都可见的常量 例如 这些常量可以是在所有类的方法中使用的物理常量 首先想到的是使用全局变量 还有更好的办法吗 最好在单独的文件中声明这些常量 包含常量的类是执行此操作的一种很好的干净方法 请参
  • 如何使用 MATLAB 的 substruct 函数创建表示使用“end”的引用的结构?

    我想使用substruct http www mathworks com help matlab ref substruct html函数创建一个结构体以供使用subsref 目的是使用索引字符串subsref而不是通常的 符号 因为我正在
  • 如何在放置颜色条后保持子图大小不变

    假设我们有一个 1 2 子图 我们在其中绘制了一些图形 如下所示 subplot 1 2 1 surf peaks 20 subplot 1 2 2 surf peaks 20 然后我们要添加一个颜色条 colorbar 我不希望结果中的正
  • MATLAB - 冲浪图数据结构

    我用两种不同的方法进行了计算 对于这些计算 我改变了 2 个参数 x 和 y 最后 我计算了每种变体的两种方法之间的 误差 现在我想根据结果创建 3D 曲面图 x gt on x axis y gt on y axis Error gt o
  • 有效地绘制大时间序列(matplotlib)

    我正在尝试使用 matplotlib 在同一轴上绘制三个时间序列 每个时间序列有 10 6 个数据点 虽然生成图形没有问题 但 PDF 输出很大 在查看器中打开速度非常慢 除了以栅格化格式工作或仅绘制时间序列的子集之外 还有其他方法可以获得
  • “Desort”向量(撤消排序)

    在Matlab中 sort返回排序后的向量和索引向量 显示哪个向量元素已移动到以下位置 v ix sort u Here v是一个包含所有元素的向量u 但已排序 ix是一个向量 显示每个元素的原始位置v in u 使用 Matlab 的语法
  • 在matlab中绘制给定区域内(两个圆之间)的向量场

    我想在 Matlab 中绘制下面的向量场 u cos x x 0 y y 0 v sin x x 0 y y 0 我可以在网格中轻松完成 例如 x 和 y 方向从 2 到 2 x 0 2 y 0 1 x y meshgrid 2 0 2 2
  • Matlab 的 imresize 函数中用于插值的算法是什么?

    我正在使用 Matlab Octaveimresize 对给定的二维数组重新采样的函数 我想了解如何使用特定的插值算法imresize works 我在Windows上使用八度 e g A 1 2 3 4 是一个二维数组 然后我使用命令 b
  • @(t)在Matlab中是什么意思? [复制]

    这个问题在这里已经有答案了 正如标题所示 考虑到下面的上下文 t 在 Matlab 中到底意味着什么 computeNumericalGradient 是一个函数 cofiCostFunc 也是一个接受一堆参数的函数 问题是 t 对 cof

随机推荐

  • 利用神经网络识别12306验证码——(五)训练模型

    需要训练的有两个模型 一个是文本识别模型 一个是图像识别模型 在训练的时候 尝试了ResNet50 ResNet101 MobileNetV2 三种模型 前两个残差神经网络模型的参数比较大 训练比较耗时 精度上也逊色于第三个模型 尝试了RT
  • Android7.0以上自动更新安装apk

    Android7 0以上加了很多特性 也对系统做了很多的优化和升级 而在对Uri的访问上也做了改变 以下用安装apk的例子来说明 对于程序 我们要实现程序能够自动检查更新安装 我们需要给程序赋予权限
  • 狼人杀服务器维护时间,狼人杀官 方将于11月30日进行停机维护

    狼人杀官 方将于11月30日进行停机维护 此次更新将更改一些设定 新增活动和关闭前面的活动 优化和修复一下问题 狼友们可以了解一下更新内容 亲爱的狼队友 为了保证服务器的稳定和服务质量 我们将于2017年11月30日10 00进行停机维护工
  • LeetCode算法题合集—链表篇

    链表基础算法题 链表的定义 java 单链表的定义 public class ListNode int val ListNode next 指向下一节点 ListNode 无参构造 ListNode int val this val val
  • 封玩家IP和机器码以及解开被封的教程

    封玩家IP和机器码以及解开被封的教程 关于封玩家IP地址的方法 可能在十多年前的第一代传奇引擎上就有了 但封机器码的功能 是GOM以后才看到的 早先的引擎上面并没有这个功能 比如HERO或者LEG等 虽然十多年前就有 但还是有不少GM 在开
  • Photomatix Pro for Mac HDR图像处理器

    Photomatix Pro是一款专业的HDR 高动态范围 照片处理软件 可以帮助用户将多张不同曝光度的照片合成一张高质量的HDR照片 并提供了丰富的HDR处理工具和效果 可以让用户轻松地创建出令人惊叹的HDR照片 Photomatix P
  • tesseract 训练---别人的东东

    关于tesseract ocr3的训练和使用 众所周知 这是一个出色的字符识别软件 这个开源项目可以在http code google com p tesseract ocr downloads list下载 在使用时 建议使用3而不要使用
  • OBS CLR插件开发

    本文所述的OBS 插件编写基于OBS CLRHostPlugin 使用C 语言写成 IDE为VS2012 完整代码详见Github 仓库地址 Part 创建工程 首先创建一个C 的项目 项目类型为类库 ClassLibrary 使用 NET
  • 多个类操作同一个Ui界面的方法(音乐播放器前期总结)

    最近自己在做类似于QQ音乐的播放器 用Qt模仿它的界面去写的 本地音乐播放功能差不多实现 除了歌词 现在已实现的功能 1 本地歌曲播放 2 播放 暂停 下一首 上一首 3 从文件夹添加歌曲至本地歌曲列表并显示 同时添加至数据库 数据库保存歌
  • Android 查看签名文件的MD5 SHA1值

    1 找到存放签名文件所在的文件夹 2 输入命令 keytool list v keystore atui jks 3 输入口令 keystore jks签名文件的密码
  • 机器学习--梯度下降法(BGD、SGD、MBGD)

    1 梯度 在微积分里面 对多元函数的参数求 part 偏导数 把求得的各个参数的偏导数以向量的形式写出来 就是梯度 比如函数 f x y f x y 分别对 x y x y求偏导数 求得的梯度向量就是 xf yf T frac part p
  • Ubuntu sudo 出现unable to resolve host 解决方法

    Ubuntu sudo 出现unable to resolve host 解决方法 Ubuntu环境执行sudo的时候都会 弹出如下的警告 上面大概的意思就是 sudo 无法解决主机 iZwz90a11x50xdx5dle0wgZ 我们可以
  • MySQL学习系列(4)-每天学习10个知识

    目录 1 InnoDB 和 MyISAM 2 SQL调优 3 数据一致性问题的解决 4 MySQL的存储引擎 5 MySQL的内存使用问题 6 索引比全表扫描慢的情况 7 行级锁和表级锁 8 MySQL的复制功能 9 数据库性能测试 10
  • CentOS8使用network.service服务管理网络

    前言 在CentOS8中 我们常用的network service服务就被NetworkManager service服务代替了 同样的 IP的配置方法也发生了改变 那么如果想使用network service服务去管理 配置系统网络怎么办
  • C语言实现扫雷 【递归扩展】 【超详细解析】

    扫雷游戏介绍 扫雷 是一款大众类的益智小游戏 于1992年发行 游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子 同时避免踩雷 踩到一个雷即全盘皆输 游戏规则 扫雷是电脑上一款非常经典的单机游戏 它的基本规则是 如果你点击一个
  • Linphone的简单使用

    目前参与了几个SIP项目 用到了几个软件 回过头来写下使用过程吧 使用的软电话是一个叫做Linphone的软件 首先拿到的是一个安装版的 感觉用不了几次 就没有安装 后来看到还有一个用QT编写的绿色版 就使用了该版本 界面简洁 QT绿色版
  • idea必备插件

    最近公司开发工具从 eclipse 全部切换到了 IntelliJ IDEA 为了提升公司开发效率 所以从网上搜集了一些常用的 IntelliJ IDEA 实用的开发插件 用于提升团队开发效率 现在在这里进行分享 让更多的人能够提升开发效率
  • http重定向流程与https证书校验流程

    http重定向 原理 在 HTTP 协议中 重定向操作由服务器通过发送特殊的响应 即 redirects 而触发 HTTP 协议的重定向响应的状态码为 3xx 浏览器在接收到重定向响应的时候 会自动采用该响应提供的新的 URL 并立即进行加
  • 10种不同类型的移动UI设计模式

    编者按 图灵教育 推荐了 移动应用UI设计模式 一书 在书中用户体验设计师Theresa Neil 介绍了包括反模式在内的10种不同类型的设计模式 无论你正在设计一款简单的iPhone应用 还是开发适用于当前市场上所有流行移动操作系统的应用
  • 【MATLAB第52期】#源码分享

    MATLAB第52期 源码分享 基于MATLAB的高斯过程GPR超参数 sigma 自动优化算法 时间序列预测模型 五折交叉验证 后台私信回复 52期 即可免费获取数据及代码 一 效果展示 二 优化思路 1 数据 一列时间序列数据 滑动窗口