%数据加载 clear clc load iris.dat; %importdata('iris.dat') %数据预处理 A1=randsample(150,118,false); trainData1=iris(A1,:) A2=randsample(150,32,false); testData1=iris(A2,:) save('trainData1.txt','trainData1','-ascii'), save('testData1.txt','testData1','-ascii'), [f1,f2,f3,f4,class]=textread('trainData1.txt','%f%f%f%f%f',150); [imput,minI,maxI]=premnmx([f1,f2,f3,f4]'); %创建神经网络 s=length(class); output=zeros(s,3); for i=1:s output(i,class(i))=1; end %设置训练参数 net=newff(minmax(input),[10 3],{'logsig','logsig'},'traingdx'); net.trainparam.show=50;%显示中间结果的周期 net.trainparam.epochs=500;%最大迭代数(学习次数) net.trainparam.goal=0.01;%学习速率 net.trainparam.lr=0.01;%学习效率 net=train(net,input,output); %开始测试 [t1,t2,t3,t4,c]=textread('testData1.txt','%f%f%f%f%f',150); [textInput,minI,maxI]=premnmx([t1,t2,t3,t4]'); Y=sim(net,textInput); [s1,s2]=size(Y); hiNum=0; for i=1:s2; [m,Index]=max(Y(:,i)); if(Index==c(i)) hiNum=hiNum+1; end end %统计识别率
时间: 2023-11-27 22:04:14 浏览: 113
Matlab笔记数据预处理剔除异常值及平滑处理.doc
5星 · 资源好评率100%
这段代码涉及到神经网络的训练和测试过程,其主要步骤如下:
1. 加载数据:从 iris.dat 文件中读取数据,然后将数据随机分为训练集和测试集。
2. 数据预处理:使用 MATLAB 自带的数据预处理函数 `premnmx` 对输入数据进行归一化。
3. 创建神经网络:使用 `newff` 函数创建一个 2 层的神经网络,第 1 层有 10 个神经元,第 2 层有 3 个神经元,激活函数都是 `logsig`。
4. 设置训练参数:设置神经网络的训练参数,包括最大迭代次数、学习速率、学习效率等。
5. 训练神经网络:使用 `train` 函数对神经网络进行训练。
6. 测试神经网络:使用 `sim` 函数对测试集进行预测,然后统计预测正确的数量,计算识别率。
需要注意的是,这段代码中存在一些问题:
1. `input` 变量没有定义,应该改为 `imput`。
2. 训练参数中的学习率 `lr` 和目标误差 `goal` 的值可能需要根据具体情况进行调整。
3. 统计识别率时,应该将 `s1` 改为 150,因为测试集有 150 个样本。
4. 在 `for` 循环中,应该将 `Index` 改为 `index`,因为 MATLAB 是区分大小写的。
以下是修改后的代码:
```
% 数据加载
clear clc
load iris.dat;
% 随机分割训练集和测试集
A1 = randsample(150, 118, false);
trainData1 = iris(A1, :);
A2 = setdiff(1:150, A1);
testData1 = iris(A2, :);
save('trainData1.txt', 'trainData1', '-ascii');
save('testData1.txt', 'testData1', '-ascii');
% 数据预处理
[f1, f2, f3, f4, class] = textread('trainData1.txt', '%f%f%f%f%f', 150);
[input, minI, maxI] = premnmx([f1, f2, f3, f4]');
s = length(class);
output = zeros(s, 3);
for i = 1:s
output(i, class(i)) = 1;
end
% 创建神经网络
net = newff(minmax(input), [10 3], {'logsig', 'logsig'}, 'traingdx');
% 设置训练参数
net.trainparam.show = 50; % 显示中间结果的周期
net.trainparam.epochs = 500; % 最大迭代数(学习次数)
net.trainparam.goal = 0.01; % 目标误差
net.trainparam.lr = 0.01; % 学习率
% 训练神经网络
net = train(net, input, output);
% 测试神经网络
[t1, t2, t3, t4, c] = textread('testData1.txt', '%f%f%f%f%f', 150);
[textInput, minI, maxI] = premnmx([t1, t2, t3, t4]');
Y = sim(net, textInput);
[s1, s2] = size(Y);
hiNum = 0;
for i = 1:s2
[m, index] = max(Y(:, i));
if index == c(i)
hiNum = hiNum + 1;
end
end
% 统计识别率
accuracy = hiNum / 150;
disp(['识别率为:', num2str(accuracy)]);
```
阅读全文