1、clear,clc% 关闭图形窗口close all% 读入数据% 打开文件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 %dn);% 关闭文件fclose(fid);% 将字符串转换为整数N = 20;% 存放整数编码后的数值矩阵C1=zeros(N+1,1000);for i=1:N+1 % 类别属性 if iscell(Ci) for j=1:1000 % eg: A1
2、2 - 2 if i 3 else d = textscan(Cij, %c%c%c%d); end C1(i,j) = dend; end % 数值属性 else C1(i,:) = Ci; 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(:,3
3、51: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)=2;% 显示正确率fprintf(正确率: n);disp(sum(y00=testy)/length(y00); (注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)