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

    程序设计

    %%  数据归一化
    [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)
    grid
    
    figure
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68

    参考资料

    [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

  • 相关阅读:
    Multi-Graph Fusion Networks for Urban Region Embedding
    24节气查询易语言代码
    java-php-net-python-新生量化训练系统计算机毕业设计程序
    lower_bound()与upper_bound()
    使用node-cmd重启electron
    无关的表进行关联查询及null=null条件
    残差resnet复现,源代码理解
    申威芯片UOS中opencv DNN推理
    动态 SQL
    机器学习-学习笔记(一) --> (假设空间 & 版本空间)及 归纳偏好
  • 原文地址:https://blog.csdn.net/kjm13182345320/article/details/133190502