matlab神经网络多分类(模式识别神经网络nprtool)

一、模式识别神经网络

在matlab命令窗口输入:nnstart 或 nprtool 就可以进入matlab神经网络GUI  

二、鸢尾花数据集iris示例

1.输入数据集,划分训练集、测试集

load fisheriris; [m,n]=size(meas); data=zeros(m,n+1); data(:,1:n)=meas; for i=1:m           %将字符串类别标签用数值形式表示 if strcmp(species{i},\'setosa\')      %strcmp(\'A\',\'B\')用于比较字符串,找出特定的字符串;类比find(a==b)用来找出特定数值 data(i,n+1)=1; elseif strcmp(species{i},\'versicolor\') data(i,n+1)=2; elseif strcmp(species{i},\'virginica\') data(i,n+1)=3; end end
%选择训练样本个数 num_train = 60;                 %共150个样本,60个训练集,90个测试集 %构造随机选择序列 choose = randperm(length(data)); %随机种子打乱数据样本的顺序 train_data = data(choose(1:num_train),:); %随机选取60个样本 label_temp = train_data(:,end); %提取训练数据的标签 train(:,end)提取最后一列; label_train = zeros(length(train_data),3); %创建矩阵以储存向量形式的标签;
%把输出分类标签1,2,3 改为工具箱要求的格式 1=[1 0 0],2=[0 1 0],3=[0 0 1] for i = 1:length(train_data) label_train(i,label_temp(i)) = 1; end train_data = train_data(:,1:end-1)\'; %提取数据集特征(剔除标签),并进行转置(转置也可以不必,后续GUI中转化为行形式即可) label_train = label_train\'; %将向量形式表示的标签进行转置(也而不必,理由同上)
test_data = data(choose(num_train+1:end),:); %提取测试集数据 label_temp = test_data(:,end); %提取测试集数据的标签 label_test = zeros(length(test_data),3); %创建矩阵,准备存放向量形式的测试数据的标签 %把输出分类标签改为工具箱要求的格式 for i = 1:length(test_data) label_test(i,label_temp(i)) = 1; end test_data = test_data(:,1:end-1)\'; %提取测试数据的特征,并进行转置 label_test = label_test\'; %提取测试数据的标签,并进行转置

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwpygz.html