%% som mapping and distinct the classs of significant and not
%------------------------ Mapping the positve training samples--------------------------------------
function [pos_train_sample,pos_test_sample,neg_train_sample,neg_test_sample,net] = SOM_choose(pos_sample,neg_sample,sizeout,SOM_epochs,net)
P = [pos_sample, neg_sample];
[feature_num sample_num] = size(P);
pos_num = size(pos_sample,2);
neg_num = size(neg_sample,2);
SOM_out_num = [sizeout sizeout]; % 输出节点数目
SOM_input_num = feature_num; % 输入节点数目
MinMaxValue = [zeros(feature_num ,1),ones(feature_num,1)];
% net = newsom( MinMaxValue,SOM_out_num);
% net.trainParam.epochs = SOM_epochs;
% net.trainParam.show = 1000;
% -------- som training
begin_time = clock;
% [net,tr,Y,E,Pf,Af] = train(net,P);
Y = sim(net,P);
cost_time = etime(clock,begin_time)
% map distribution
[Maxvalue max_num] = max(Y);
distr = zeros(pos_num,2);
for(i=1:sample_num)
distr(i,1) = floor((max_num(i)-1)/sizeout)+1;
distr(i,2) = max_num(i)-( distr(i,1) - 1 )*sizeout+1;
distr(i,2) = rem(max_num(i)-1,sizeout)+1;
end
distr_pos = distr(1:pos_num,:);
distr_neg = distr(pos_num+1:sample_num,:);
% plot the distribution of the map result
figure
for(i=1:pos_num)
hold on
plot(distr_pos(i,1),distr_pos(i,2),'r*');
end
for(i=1:neg_num)
hold on
plot(distr_neg(i,1),distr_neg(i,2),'bsquare');
end
title('som result distribution ')
% cal the center of the positive class
center = floor(mean(distr_pos,1));
plot(center(1),center(2),'rO','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',10);
% cal the distance of the positive class, the mean distance, the max_num distance
dislength = zeros(pos_num,1);
dislength = dist(distr_pos,center');
mean_dist = mean( dislength,1);
max_dist = max( dislength);
thresh_dist = floor((mean_dist+max_dist)/2);
train_num = 0;
test_num = 0;
train_som = zeros(feature_num,pos_num);
test_som = zeros(feature_num,pos_num);
for(i=1:pos_num)
if( dislength(i)<=thresh_dist)
train_num = train_num + 1;
train_som(:,train_num) = pos_sample(:,i);
% choose the train sample
hold on
plot(distr_pos(i,1),distr_pos(i,2),'c+');
else
test_num = test_num + 1;
test_som(:,test_num) = pos_sample(:,i);
end
end
pos_train_sample = train_som(:,1:train_num);
pos_test_sample = test_som(:,1:test_num);
% cal the center of the positive class
center = floor(mean(distr_neg,1));
hold on
plot(center(1),center(2),'rO','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',10);
% cal the distance of the positive class, the mean distance, the max_num distance
dislength = zeros(neg_num,1);
dislength = dist(distr_neg,center');
mean_dist = mean( dislength,1);
max_dist = max( dislength);
thresh_dist = floor((mean_dist+max_dist)/2);
train_num = 0;
test_num = 0;
train_som = zeros(feature_num,neg_num);
test_som = zeros(feature_num,neg_num);
for(i=1:neg_num)
if( dislength(i)<=thresh_dist)
train_num = train_num + 1;
train_som(:,train_num) = neg_sample(:,i);
% choose the train sample
hold on
plot(distr_neg(i,1),distr_neg(i,2),'Mx');
else
test_num = test_num + 1;
test_som(:,test_num) = neg_sample(:,i);
end
end
neg_train_sample = train_som(:,1:train_num);
neg_test_sample = test_som(:,1:test_num);
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
som-bp混合神经网络的matlab程序.rar (10个子文件)
som-bp混合神经网络的matlab程序
SOM_03.m.txt 4KB
SOM_choose.m.txt 4KB
statis.m.txt 2KB
HybridNet.m.txt 3KB
SOM_00.m.txt 1KB
BP_ANN.m.txt 3KB
SOMtest.m.txt 763B
SOM_01.m.txt 4KB
SOM_02.m.txt 4KB
BP_ANN_wjj.m.txt 2KB
共 10 条
- 1
Kinonoyomeo
- 粉丝: 72
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1