回归预测 | MATLAB实现PCA-BP主成分降维结合BP神经网络多输入单输出回归预测

news/2024/11/29 13:37:24/

回归预测 | MATLAB实现PCA-BP主成分降维结合BP神经网络多输入单输出回归预测

目录

    • 回归预测 | MATLAB实现PCA-BP主成分降维结合BP神经网络多输入单输出回归预测
      • 效果一览
      • 基本介绍
      • 程序设计
      • 参考资料

效果一览

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

3

基本介绍

MATLAB实现PCA-BP主成分降维算法结合BP神经网络多输入单输出回归预测(完整源码和数据)
1.输入多个特征,输出单个变量;
2.多输入单输出回归预测;
3.多指标评价,代码质量极高;excel数据,方便替换,运行环境2018及以上;
4.评价指标MAE、MBE、R2,代码质量极高,方便学习和替换数据;
5.要求2018版本及以上。


程序设计

  • 完整源码和数据获取方式:私信回复MATLAB实现PCA-BP主成分降维结合BP神经网络多输入单输出回归预测
%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc                     % 清空命令行%%  导入数据
res = xlsread('data.xlsx');%%  划分训练集和测试集
temp = randperm(103);P_train = res(temp(1: 80), 1: 7)';
T_train = res(temp(1: 80), 8)';
M = size(P_train, 2);P_test = res(temp(81: end), 1: 7)';
T_test = res(temp(81: end), 8)';
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);%%  仿真测试
t_sim1 = sim(net, p_train);
t_sim2 = sim(net, p_test);%%  数据反归一化
T_sim1 = mapminmax('reverse', t_sim1, ps_output);
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);%%  相关指标计算
% 决定系数 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)])

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/129215161
[2] https://blog.csdn.net/kjm13182345320/article/details/128105718


http://www.ppmy.cn/news/1094867.html

相关文章

Python中的数据输入

获取键盘输入 input语句 使用input()可以从键盘获取输入,使用一个变量来接收 print("你是谁?") name input() print(f"我知道了,你是{name}")# print("你是谁?") name input("你是谁&…

【C++二叉树】进阶OJ题

【C二叉树】进阶OJ题 目录 【C二叉树】进阶OJ题1.二叉树的层序遍历II示例代码解题思路 2.二叉搜索树与双向链表示例代码解题思路 3.从前序与中序遍历序列构造二叉树示例代码解题思路 4.从中序与后序遍历序列构造二叉树示例代码解题思路 5.二叉树的前序遍历(非递归迭…

《好笑的爱》阅读笔记

《好笑的爱》阅读笔记 是暑期认识的一位川大的同学推荐的,说他喜欢的一个作家是米兰昆德拉,喜欢他的短篇小说集《好笑的爱》。于是去武汉中心书城顺便买了两本书,另外还买了一本是《帷幕》,至今还没有看。 这本书总共包含了几篇短…

空气净化器上亚马逊美国站需要办理什么认证?空气净化器UL867测试报告如何办理?

空气净化器又称“空气清洁器”、空气清新机、净化器,是指能够吸附、分解或转化各种空气污染物(一般包括PM2.5、粉尘、花粉、异味、甲醛之类的装修污染、细菌、过敏原等),有效提高空气清洁度的产品,主要分为家用 、商用…

【已解决】Unknown initial character set index ‘45‘ received from server

出现这个数据库连接异常,可能是数据库太新,所以更新一下JDBC连接驱动,原来的是5.0.4 ,现在换成5.1.47.连接成功。 参考其他博主的文章:Java——连接数据库MySQL 5.7和8.0的区别_这段语句mysql5.7和8.0有什么区别url: …

concurrentHashMap jdk1.8

文章目录 属性:内部类:Node链表节点:ForwardingNode节点:TreeNode节点:TreeBin节点: put方法treeifyBin方法:tryPresize方法:addCount方法helpTransfer方法:transfer方法…

【随想】每日两题Day.1

题目:LeetCode 704.二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3…

实战:用线性函数、梯度下降解决线性回归问题

文章目录 线性回归线性函数梯度下降实现代码 线性回归是机器学习中最简单的模型之一,在许多应用中都有广泛的应用。本篇文章将介绍如何用线性函数、梯度下降来解决线性回归问题。 线性回归 线性回归是一种用来预测连续输出变量(也叫做响应变量&#xff…