% 1 4 5 7 -- sample 1
% 2 5 6 6 -- sample 2
% in cndx = you will get the position of each training sample in cluster no
% as SOM takes each sample as a column we need to transpose feature before applying on SOM
net = newsom( trainFeature' ,[2 2] ); % 4 cluster
net.trainParam.epochs = 100;
[net,tr,Y,E,Pf,Af] = train(net, trainFeature' );
distances = dist( trainFeature ,net.IW{1}' );
[d,cndx_train ] = min(distances,[],2); % cndx gives the cluster index, d gives the distance
cndx_train % the position of each training sample in cluster no
bookKeep=zeros(SOMd1 * SOMd2 ,2);%one column for +ve,one column for -ve
for c=1: totTrain
index = cndx_train(c);
if(c<=totPosTrain)
bookKeep( index,1) = bookKeep( index,1) + 1; %+ve sample
else
bookKeep( index,2) = bookKeep( index,2) + 1; %-ve sample
end
end
dlmwrite('clusterInfo',bookKeep,'\t');
out = sim(net, featureInTest' );
% format: clusterNo*testSample : 0 0 0 1 0 0 0 0 % that means 4th sample in this custer;
% outFormat (clusterNo, serial )
% 2 5 6 6 -- sample 2
% in cndx = you will get the position of each training sample in cluster no
% as SOM takes each sample as a column we need to transpose feature before applying on SOM
% ------- train -----------
trainFeature = [ 1 2 ; 4 5 ; 5 6 ; 7 6 ]; % Two training data with 4 feature each . So each column is a sample net = newsom( trainFeature' ,[2 2] ); % 4 cluster
net.trainParam.epochs = 100;
[net,tr,Y,E,Pf,Af] = train(net, trainFeature' );
distances = dist( trainFeature ,net.IW{1}' );
[d,cndx_train ] = min(distances,[],2); % cndx gives the cluster index, d gives the distance
cndx_train % the position of each training sample in cluster no
bookKeep=zeros(SOMd1 * SOMd2 ,2);%one column for +ve,one column for -ve
for c=1: totTrain
index = cndx_train(c);
if(c<=totPosTrain)
bookKeep( index,1) = bookKeep( index,1) + 1; %+ve sample
else
bookKeep( index,2) = bookKeep( index,2) + 1; %-ve sample
end
end
dlmwrite('clusterInfo',bookKeep,'\t');
% --------- test -------------
out = sim(net, featureInTest' );
% format: clusterNo*testSample : 0 0 0 1 0 0 0 0 % that means 4th sample in this custer;
% outFormat (clusterNo, serial )
out = out'; % #testSample * clusterNo
dlmwrite('out',out,'\t');
for c=1:totTest
clusterNo(c) = find( out(c ,:) );
if c<=totPosTest
origLabel(c) = 1;
else
origLabel(c) = -1;
end
end
dlmwrite('predicted',[origLabel' clusterNo'],'\t');
dlmwrite('out',out,'\t');
for c=1:totTest
clusterNo(c) = find( out(c ,:) );
if c<=totPosTest
origLabel(c) = 1;
else
origLabel(c) = -1;
end
end
dlmwrite('predicted',[origLabel' clusterNo'],'\t');
Comments
Post a Comment