首页 > 其他分享 >区间预测 | Matlab实现CPO-BP-KDE核密度估计多置信区间多变量回归区间预测

区间预测 | Matlab实现CPO-BP-KDE核密度估计多置信区间多变量回归区间预测

时间:2025-01-11 21:59:06浏览次数:3  
标签:置信区间 num 密度估计 res train 区间

区间预测 | Matlab实现CPO-BP-KDE核密度估计多置信区间多变量回归区间预测

目录

效果一览

在这里插入图片描述

在这里插入图片描述

基本介绍

1.Matlab实现CPO-BP-KDE冠豪猪算法优化BP神经网络核密度估计多置信区间多变量回归区间预测;

2.多变量单输出,包括点预测+概率预测曲线+核密度估计曲线,MatlabR2023b及以上版本运行,提供多种置信区间!评价指标包括R2、MAE、RMSE、MAPE、区间覆盖率picp、区间平均宽度百分比pinaw等。

3.直接替换Excel数据即可用,注释清晰,适合新手小白,直接运行main文件一键出图。

4.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。

程序设计

  • 完整程序和数据获取方式私信博主回复区间预测 | Matlab实现CPO-BP-KDE核密度估计多置信区间多变量回归区间预测




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

res = xlsread('data.xlsx');
%%
num_size = 0.7;% 训练集占数据集比例
dataran = 0; %不打乱数据
%%
%%  数据分析
outdim = 1;                                  % 最后一列为输出
num_samples = size(res, 1);                  % 样本个数
num_train_s = round(num_size * num_samples); % 训练集样本个数
AA1 = res(1:num_train_s,:);
AA2 = res(num_train_s+1:end-1,:);
AA3 = res(end,:);
clear res;
if dataran == 1
    AA1 = AA1(randperm(size(AA1, 1)), :);         % 打乱数据集
    AA2 = AA2(randperm(size(AA2, 1)), :);         % 打乱数据集
end
res=[AA1;AA2;AA3];
f_ = size(res, 2) - outdim;                  % 输入特征维度
%% 归一化
[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);
%% *值评估指标*
errorTest = T_sim2 - T_test;
AE = abs(errorTest); %绝对误差
MSEErrorTest = mse(errorTest);  %测试集误差
figure;
subplot(2,2,1)
bar(errorTest);
subplot(2,2,2)
histogram(AE,'BinWidth',0.5);
xlabel('绝对误差区间的中位数','FontWeight',"bold");
ylabel('位于该误差区间的样本个数','FontWeight',"bold");
MAE = sum(AE)/length(AE);
MSE = MSEErrorTest;
RMSE = sqrt(MSE);
disp(['测试集数据的R2为:', num2str(R2)])
disp(['测试集数据的MAE为:', num2str(mae2)])
disp(['测试集数据的RMSE为:', num2str(RMSE2)])
disp(['测试集数据的MAPE为:', num2str(MAPE2)])

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/127931217
[2] https://blog.csdn.net/kjm13182345320/article/details/127418340

标签:置信区间,num,密度估计,res,train,区间
From: https://blog.csdn.net/kjm13182345320/article/details/145066815

相关文章

  • 124.【C语言】数据结构之快速排序的小区间优化和非递归的解决方法
    目录1.小区间优化测试代码运行结果2.非递归的解决方法(重要!)递归产生的问题一般来说,递归改非递归有两种方法算法分析递归产生的二叉树栈的示意图先写代码框架再填写细节部分1.小区间优化回顾121.【C语言】数据结构之快速排序(未优化的Hoare排序存在的问题)以及......
  • P2082 区间覆盖(加强版)
    P2082区间覆盖(加强版)题目已知有\(N\)个区间,每个区间的范围是\([s_i,t_i]\),请求出区间覆盖后的总长。输入第一行一个正整数\(N\),表示区间个数。接下来\(N\)行,每行两个正整数,表示\(s_i\)和\(t_i\)。输出共一行,一个正整数,为覆盖后的区间总长。样例输入31100000......
  • 【区间合并+贡献法】codeforces 1789 C. Serval and Toxel's Arrays
    题目https://codeforces.com/problemset/problem/1789/C题意第一行输入一个正整数\(T(1\leqT\leq10^4)\),代表\(T\)组测试用例。对于每组测试用例:第一行输入两个正整数\(n,m(1\leqn,m\leq2\times10^5)\),分别代表要输入的数组长度和修改次数。第二行输入一个长......
  • 【代码随想录】刷题记录(95)-合并区间
    题目描述:以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i]=[starti,endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例1:输入:intervals=[[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10]......
  • 【代码随想录】刷题记录(94)-划分字母区间
    题目描述:给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。返回一个表示每个字符串片段的长度的列表。 示例1:输入:s="ababcbacadefegdehijhklij"......
  • 二分查找疑难点-区间问题
        大家在写二分查找时,对while()循环中的left<right还是left<=right以及right=mid还是right=mid-1经常会搞混,下面理清这里面的逻辑。   首先说明一下二分查找的使用条件,1.元素需要有序,这样才能二分,2.无重复元素,因为重复元素会导致查找成功返回的下标......
  • 划分字母区间(贪心算法)
    给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。返回一个表示每个字符串片段的长度的列表。 示例1:输入:s="ababcbacadefegdehijhklij"输出:[9,7,8]......
  • 57. 插入区间
    题目名称插入区间题目叙述给你一个无重叠的,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例1:输入:intervals=[[1,3],[6,9]],newInterval=[2,5]输出:[[1,5],[6,9]]示例2:......
  • 求m到n区间的素数和,同时判断该区间格式是否正确
    下面给出最基本的函数组成的代码:#include<stdio.h>intfun(intm,intn){inti,a,sum=-1;//-1作为初值,为未能符合循环条件的标记  for(i=m;i<=n;i++)   {sum=sum==-1?0:sum;//恢复正常值    for(a=2;a<=i/2;a++)//对称性:a*b=b*a,除数取到一......
  • 30. 区间交集
    题目描述给定一组闭区间,其中部分区间存在交集。任意两个给定区间的交集,称为公共区间(如:[1,2],[2,3]的公共区间为[2,2],[3,5],[3,6]的公共区间为[3,5])公共区间之间若存在交集,则需要合并(如:[1,3],[3,5]区间存在交集[3,3],需合并为[1,5])。按升序排列输出合并后的区间列表......