前言
源代码
数据预处理分析
1 相关性分析
2 聚类分析
3 随机获取训练数据和预测数据集
4 对数据进行归一化
BP神经网络
1 BP神经网络结构本例
2 神经网络训练后权值和阈值查看
3 神经网络训练完输出与输入关系式
0 前言
训练数据下载:
data.mat
1. 源代码
【main.m】
%% 清空环境变量
clc
clear
%% 从Excel导入变量
load data;
%% 相关性分析
R = corrcoef(tempData);
figure;
ss = size(tempData,2);
%热图,将相关性可视化出来
imagesc(R);
set(gca,'xtick',1:ss);
set(gca,'ytick',1:ss);
set(gca,'xticklabel',variables);
set(gca,'yticklabel',variables);
axis([0 ss+1 0 ss+1]);
grid;
colorbar;
%% 获取BP神经网络训练数据
%通过聚类分析得到训练数据
allData = tempKmean(tempData,variables);
[m0,n0] = size(allData)
input = allData(:,1:(end-1));
output = allData(:,end)'; %% 随机选取s组训练数据,以及t组预测数据(s+t < 25000) s = m0-(m0/20); t = (m0)/20; k = rand(1,s+t); %重新得到向量k的有序(从小到大排列)向量m,并得到对应的下标向量n [m,n]=sort(k); input_train = input(n(1:s),:)';
output_train = output(n(1:s));
input_test = input(n(s+1:s+t),:)'; output_test = output(n(s+1:s+t)); %% 训练数据归一化 [inputn,inputps] = mapminmax(input_train); [outputn,outputps] = mapminmax(output_train); %% BP网络训练 %初始化网络结构 net=newff(inputn,outputn,6); net.trainParam.epochs=1000; net.trainParam.lr=0.1; net.trainParam.goal=0.00004; %网络训练 net=train(net,inputn,outputn); %% 用训练好的BP神经网络预测函数输出 %预测数据归一化 inputn_test=mapminmax('apply',input_test,inputps);
%预测输入预测
Y = sim(net,inputn_test);
figure;
plot(Y);
title('BP神经网络预测输出','FontName','Times New Roman','FontWeight','Bold','FontSize',16)
%% 输出结果反归一化
BPoutput = mapminmax('reverse',Y',outputps)'; figure; plot(BPoutput); title(&