当前位置: 首页 > news >正文

回归预测 | Matlab实现基于MIC-BP最大互信息系数数据特征选择算法结合BP神经网络的数据回归预测

回归预测 | Matlab实现基于MIC-BP最大互信息系数数据特征选择算法结合BP神经网络的数据回归预测

目录

    • 回归预测 | Matlab实现基于MIC-BP最大互信息系数数据特征选择算法结合BP神经网络的数据回归预测
      • 效果一览
      • 基本介绍
      • 研究内容
      • 程序设计
      • 参考资料

效果一览

1
在这里插入图片描述

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

基本介绍

Matlab实现基于MIC-BP最大互信息系数数据特征选择算法结合BP神经网络的数据回归预测(Matlab完整程序和数据)
1.最大互信息系数MIC(数据特征选择算法)的回归预测,MIC特征选择回归预测,多输入单输出模型。
2.多特征输入模型,直接替换数据就可以用。
3.语言为matlab。预测对比图,误差分析图,相关分析图。
4.运行环境matlab2018及以上。
经过特征选择后,保留特征的序号为:
152 153 154 155 156 157 158 159 160

-----------------------误差计算--------------------------
评价结果如下所示:
平均绝对误差MAE为:0.27482
均方误差MSE为: 0.13341
均方根误差RMSEP为: 0.36525
决定系数R^2为: 0.94425
剩余预测残差RPD为: 4.2536
平均绝对百分比误差MAPE为: 0.0031803

研究内容

最大互信息系数(Maximum Information Coefficient,MIC)是一种常用的数据特征选择算法,用于发现特征之间的非线性关系。它可以测量两个变量之间的最大相关性。首先,准备一个包含多个特征和目标变量的数据集。对于每对特征和目标变量,计算它们之间的互信息值。互信息度量了两个变量之间的相关性。将计算得到的互信息值进行排序,按照互信息值的大小进行降序排列。从排序后的互信息值列表中选择具有最大互信息系数的特征。可以根据具体需求选择一定数量的特征。最大互信息系数算法的核心思想是找到特征与目标变量之间的最大相关性,因此选择具有最大互信息系数的特征可以被认为是最相关的特征。这种选择方法可以帮助排除那些与目标变量关联较弱的特征,提高模型的性能和效率。在实际应用中,可以结合其他特征选择方法或降维技术来进一步优化特征选择过程。

程序设计

  • 完整程序和数据下载方式(资源处直接下载):Matlab实现基于MIC-BP最大互信息系数数据特征选择算法结合BP神经网络的数据回归预测
%%  数据归一化
[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 ;%%  特征选择
k = 9;        % 保留特征个数
[save_index, mic] = mic_select(p_train, t_train, k);%%  输出选择特征的对应序号
disp('经过特征选择后,保留9个特征的序号为:')
disp(save_index')%%  特征重要性
figure
bar(mic)
xlabel('输入特征序号')
ylabel('最大互信息系数')%%  特征选择后的数据集
p_train = p_train(save_index, :);
p_test  = p_test (save_index, :);%%  输出编码
t_train = ind2vec(t_train);
t_test  = ind2vec(t_test );%%  创建网络
net = newff(p_train, t_train, 5);%%  设置训练参数
net.trainParam.epochs = 1000;  % 最大迭代次数
net.trainParam.goal = 1e-6;    % 误差阈值
net.trainParam.lr = 0.01;      % 学习率%%  训练网络
net = train(net, p_train, t_train);%%  数据反归一化
T_sim1 = vec2ind(t_sim1);
T_sim2 = vec2ind(t_sim2);%%  性能评价
error1 = sum((T_sim1 == T_train)) / M * 100 ;
error2 = sum((T_sim2 == T_test )) / N * 100 ;%%  绘图
figure
plot(1: M, T_train, 'r-*', 1: M, T_sim1, 'b-o', 'LineWidth', 1)
legend('真实值', 'MIC-BP预测值')
xlabel('预测样本')
ylabel('预测结果')
string = {'训练集预测结果对比'; ['准确率=' num2str(error1) '%']};
title(string)
gridfigure
plot(1: N, T_test, 'r-*', 1: N, T_sim2, 'b-o', 'LineWidth', 1)
legend('真实值', 'MIC-BP预测值')
xlabel('预测样本')
ylabel('预测结果')
string = {'测试集预测结果对比'; ['准确率=' num2str(error2) '%']};
title(string)
grid

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/128163536?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/kjm13182345320/article/details/128151206?spm=1001.2014.3001.5502

http://www.lryc.cn/news/177063.html

相关文章:

  • Hive-命令行CDH访问开启kerberos的hive
  • 手机能搜到某个wifi,电脑搜不到解决方法(也许有用)
  • Java-day18(网络编程)
  • Java多线程编程-栅栏CyclicBarrier实例
  • 【100天精通Python】Day67:Python可视化_Matplotlib 绘制动画,2D、3D 动画 示例+代码
  • 变量、常量以及与其他语言的差异 - Go语言从入门到实战
  • Android 编译插桩操纵字节码
  • 云原生的简单理解
  • AVL Cruise 2020.1 安装教程
  • 数组07-滑动窗口、HashMap
  • 【C++杂货店】类和对象(上)
  • K8S笔记
  • MySQL关于日期函数的使用-笔记
  • 【postgresql 】 ERROR: “name“ is not supported as an alias
  • 都用HTTPS了,还能被查出浏览记录?
  • vi配置文件.vimrc内容示例
  • MacOS上的Pip和Python升级指南
  • VB6.0实现修改EXE程序的图标
  • Python 编程基础 | 第二章-基础语法 | 2.3、for 语句
  • linux下解决tomcat错误问题
  • PMP证书的价值如何?
  • linux上mysql数据备份(全量备份策略+增量备份策略)
  • PHP实现DFA算法,查找关键词
  • JTS:08 JTS图形相交
  • 深挖 ThreadLocal 底层原理?它有什么用?学会之后手撕面试官
  • sort()排序函数(c++)
  • 如何评估测试用例的优先级?
  • 510758-28-8,用于标记蛋白质和酶的配体TBTA
  • Jtti:云服务器ftp不能访问端口如何解决
  • 云服务器租用价格表概览_阿里云腾讯云华为云