www.gusucode.com > som-bp混合神经网络的matlab程序源码 > matlab_emulator/HybridNet/HybridNet.m

    % Hybrid net
clear;
clc;
%--------------------------- inital the test data -----------------
% --------------- read data from the file -----------
base_path = 'E:\SOMBP\data_source\feature02\';                      % minmax([I1';I2';I3';I4';I5';I6';I7';I8'])
I1 = load([base_path,'apen.txt']);           % 1 >> 2        1.2563    1.8150        
I2 = load([base_path,'kc.txt']);             % 0 >> 1        0.6299    0.9611
I3 = load([base_path,'mir.txt']);            % 0 >> 5        0.4802    4.0544
I4 = load([base_path,'asm.txt']);            % 0 >> 0.01    0.0004    0.0037
I5 = load([base_path,'idm.txt']);            % 0 >> 0.5       0.0663    0.2906
I6 = load([base_path,'cont.txt']);           % 0 >> 500     12.2600  337.5440
I7 = load([base_path,'ent.txt']);            % 5 >> 9        5.8675    7.9858
I8 = load([base_path,'gln.txt']);            % 10 >> 60      13.4204   53.2048
%--------------- normal the feature ----------
sum_num = size(I1,1);
I = [(I1'-ones(1,sum_num));I2';(I3'./5);(I4'./0.01);I5'./0.5;(I6'./500);(I7'-ones(1,sum_num).*5)./4;(I8'-ones(1,sum_num).*10)./50];
% P = [I((1:5),:);I(7,:)];
% feature_num = 6;
P = [I((1:3),:);I(5,:)];
feature_num = 4;
% ============= 正常样本 ========================
% 数目
positive_num = 55;
test_positive_num = 20;
train_positive_num = positive_num-test_positive_num;
% 总样本集
pos_sample = P(:,1:positive_num);
% 训练集
pos_train_sample = pos_sample(:,1:train_positive_num);
%  测试样本数目
pos_test_sample = pos_sample(:,1+train_positive_num:positive_num);
% ============ 病变样本 ==========================
% 数目
negative_num = 75; 
test_negative_num = 25;
train_negative_num = negative_num-test_negative_num;
% 总样本集
neg_sample = P(:,positive_num+1:sum_num);
% 训练集
neg_train_sample = neg_sample(:,1:train_negative_num);
% 测试集
neg_test_sample = neg_sample(:,1+train_negative_num : negative_num);



% ------------------- discern the number of test and train sample ------------------------
sizeout = 40;
SOM_epochs = 1000;
%  positive choose
load SOMchoose_result.mat;
% [pos_train_sample,pos_test_sample,neg_train_sample,neg_test_sample,net] = SOM_choose(pos_sample,neg_sample,sizeout,SOM_epochs,som_net_pos);
% % negative choose
% [neg_train_sample,neg_test_sample,som_net_neg] = SOM_choose(neg_sample,sizeout,SOM_epochs);
% save the SOM_choose resultz
% saveBase = 'E:\SOMBP\software\HybridNet004\';
% save([saveBase 'SOMchoose_result.mat'],'pos_train_sample','pos_test_sample',......
%                                        'neg_train_sample','neg_test_sample',......
%                                        'net');




% ------------------ train the bp net ----------------------

BP_train_P = [pos_train_sample,neg_train_sample];
BP_test_P = [pos_test_sample,neg_test_sample];

train_positive_num = size(pos_train_sample,2);
train_negative_num = size(neg_train_sample,2);
test_positive_num = size(pos_test_sample,2);
test_negative_num = size(neg_test_sample,2);

BP_epochs = 10000;
BP_train_feature = [1:feature_num]; 
BP_out_num = 1;            
BP_input_num = feature_num ;
% load SOMchoose_result.mat;
BP_ANN;