1.数据集描述;
数据集下载链接

%% 1.加载数据
train_data=xlsread('traindata.xlsx');
test_data=xlsread('testdata.xlsx');
output_train=train_data(:,1)';%训练集标签
output_test=test_data(:,1)';%测试集标签
input_train=train_data(:,2:3)';%训练集的数据
input_test=test_data(:,2:3)';%训练集的数据
%% 2.BP神经网络的初始化参数
%节点个数
inputnum=2; % 输入层节点数量
hiddennum=1;% 隐含层节点数量
outputnum=1; % 输出层节点数量
%% 3.训练样本数据归一化
[inputn,inputps]=mapminmax(input_train);%归一化到[-1,1]之间,inputps用来作下一次同样的归一化
[outputn,outputps]=mapminmax(output_train);
%% 4.构建BP神经网络
net=newff(inputn,outputn,hiddennum,{'tansig','purelin'});% 建立模型,传递函数使用purelin,采用梯度下降法训练
W1= net. iw{1, 1};%输入层到中间层的权值
B1 = net.b{1};%中间各层神经元阈值
W2 = net.lw{2,1};%中间层到输出层的权值
B2 = net. b{2};%输出层各神经元阈值
%% 5. 网络参数配置( 训练次数,学习速率,训练目标最小误差等)
net.trainParam.epochs=1000;% 训练次数,这里设置为1000次
net.trainParam.lr=0.01;% 学习速率,这里设置为0.01
net.trainParam.goal=0.00001;% 训练目标最小误差,这里设置为0.00001
%% 6.BP神经网络训练
net=train(net,inputn,outputn);%开始训练,其中inputn,outputn分别为输入输出样本
%% 7.测试样本归一化
inputn_test=mapminmax('apply',input_test,inputps);% 对样本数据进行归一化
%% 8.BP神经网络预测
an=sim(net,inputn_test); %用训练好的模型进行仿真
%% 9.预测结果反归一化与误差计算     
test_simu=mapminmax('reverse',an,outputps); %把仿真得到的数据还原为原始的数量级
test_simu=round(test_simu);
error=test_simu-output_test;%预测值和真实值的误差
[m,n]=find(error==0);%训练集和测试集之间的误差为0
%% 10.真实值与预测值误差比较
plot(output_test,'bo')
hold on
plot(round(test_simu),'r*')
hold on
legend('实际输出值','预测输出值')
xlabel('数据组数')
ylabel('样本值')
title('BP神经网络测试集的预测值与实际值对比图')
accuracy=length(m)/length(output_test);
str=sprintf('准确率Accuracy =%g%%',accuracy*100);
disp(str);

实验结果
`
二分类结果

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐