您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > BP神经网络用于分类
clear,clc%关闭图形窗口closeall%%读入数据%打开文件fid=fopen('german.data','r');%按格式读取每一行%每行包括21项,包括字符串和数字C=textscan(fid,'%s%d%s%s%d%s%s%d%s%s%d%s%d%s%s%d%s%d%s%s%d\n');%关闭文件fclose(fid);%将字符串转换为整数N=20;%存放整数编码后的数值矩阵C1=zeros(N+1,1000);fori=1:N+1%类别属性ifiscell(C{i})forj=1:1000%eg:'A12'-2ifi10d=textscan(C{i}{j},'%c%c%d');%eg:'A103'-3elsed=textscan(C{i}{j},'%c%c%c%d');endC1(i,j)=d{end};end%数值属性elseC1(i,:)=C{i};endend%%划分训练样本与测试样本%输入向量x=C1(1:N,:);%目标输出y=C1(N+1,:);%正例posx=x(:,y==1);%负例negx=x(:,y==2);%训练样本trainx=[posx(:,1:350),negx(:,1:150)];trainy=[ones(1,350),ones(1,150)*2];%测试样本testx=[posx(:,351:700),negx(:,151:300)];testy=trainy;%%样本归一化%训练样本归一化[trainx,s1]=mapminmax(trainx);%测试样本归一化testx=mapminmax('apply',testx,s1);%%创建网络,训练%创建BP网络net=newff(trainx,trainy);%设置最大训练次数net.trainParam.epochs=1500;%目标误差net.trainParam.goal=1e-13;%显示级别net.trainParam.show=1;%训练net=train(net,trainx,trainy);%%测试y0=net(testx);%y0为浮点数输出。将y0量化为1或2。y00=y0;%以1.5为临界点,小于1.5为1,大于1.5为2y00(y001.5)=1;y00(y001.5)=2;%显示正确率fprintf('正确率:\n');disp(sum(y00==testy)/length(y00));
本文标题:BP神经网络用于分类
链接地址:https://www.777doc.com/doc-2900962 .html