https://blog.csdn.net/gavinlyy/article/details/8302814
https://blog.csdn.net/u011314012/article/details/51191006
%神经网络: %随机生成1000个二维向量,作为样本,并绘出其分布 P = rands(2,1000); plot(P(1,:),P(2,:),'+r') title('初始随机样本点分布'); xlabel('P(1)'); ylabel('P(2)'); %建立网络,得到初始权值 net=newsom([0 1; 0 1],[5 6]); w1_init=net.iw{1,1} %绘出初始权值分布图 figure; plotsom(w1_init,net.layers{1}.distances) %分别对不同的步长,训练网络,绘出相应的权值分布图 for i=10:30:100 net.trainParam.epochs=i; net=train(net,P); figure; plotsom(net.iw{1,1},net.layers{1}.distances) end %对于训练好的网络,选择特定的输入向量,得到网络的输出结果 p=[0.5;0.3]; a=0; a = sim(net,p)
%SOM神经网络 clc, clear; pp = xlsread('E:\a-建模\第六轮\附件4副本.xlsx', 'A1:E4961'); P = pp'; %一横行表示一组属性数据 %生成一个som网络 net = newsom(minmax(P), [6 6]); %训练次数 net.trainparam.epochs = 1; %训练网格和查看分类 net=train(net,P); y = sim(net, P); yc(7,:) = vec2ind(y); % hold on plotsom(net.iw{1,1},net.layers{1}.distances) yc % hold off %%网格作分类的预测 %测试样本输入 t = P; %sim()来做网格仿真 r = sim(net, t); %变换函数 将单值向量转变成下标向量 rr = vec2ind(r) %得到每个组数据在那个格子里面 fenlei_4 = rr' save fenlei_4; %找出分类和对应的值: ct = zeros(36); %正常样本类 % zhengchan = [7 8 13 14 15 19 20 21 25 26 27 28 31 32 33 34]; %找出分类点: % dian = []; %存放需要剔除的类别编号 % dian = [1 2 3 7 8 9 13 14 19 20]; dian = [1 2 3 7 8 13 14]; % [zn, zlen] = size(zhengchan); % cz = 0; % bj = zeros(1,36); %1表示正常,0表示需要剔除的类别 % for i = 1:zlen % bj(zhengchan(i)) = 1; %标记正常 % end % cct = 0; % for i = 1:36 % if bj(i) == 0 %需要剔除的 % cct = cct + 1; % dian(cct) = i; % end % end %统计 [n,len] = size(dian); for i = 1:4961 for j = 1:len if fenlei_4(i) == dian(j) ct(j) = ct(j) + 1; bianhao(j, ct(j)) = i; end end end zongshu = sum(sum(ct)) %总数 %剔除数据: %需要剔除的标号: len2 = 4961; tichu = zeros(1,len2); for i=1:10 %bianhao的行数 for j = 1:360 %提出类中最多数据个数,bianhao的列数 if bianhao(i,j) > 0 tichu(bianhao(i,j)) = 1; end end end tichuhouP = []; %存放剔除后的数据 myct = 0; for i=1:len2 if tichu(i) == 0 %只取正常数据 myct = myct + 1; tichuhouP(:,myct) = P(:,i); end end %画图: %剔除前: % plot(P(1,:)', '-r'); hold on; % plot(P(2,:)', '-b'); plot(P(3,:)', '-g'); % plot(P(4,:)', '-k'); % plot(P(5,:)', '-y'); % plot(P(6,:)', '-c'); % plot(P(7,:)', '-m'); xlabel('序号'); ylabel('测量值'); title('附件四原始数据'); %剔除后: % plot(tichuhouP(1,:)', '-k'); % plot(tichuhouP(2,:)', '-g'); plot(tichuhouP(3,:)', '-m'); xlabel('序号'); ylabel('测量值'); title('附件四去异常后数据'); yst2 = tichuhouP'; hold on; for i = 1:5 plot(P(i,:)'); end xlabel('序号'); ylabel('测量值'); title('一次风机部分检测数据');