Code covered by the BSD License  

Highlights from
Fuzzy ARTMAP

image thumbnail
from Fuzzy ARTMAP by Massimiliano Versace
This package contains an implementation of Fuzzy ARTMAP.

createDataStruct(in_mat,row_col_string,labels_end_begin,perc_train,data_description,varargin)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This is part of an implementation of the biased ARTMAP Matlab code package,
% as described in CAS/CNS Technical Report TR-2009-xxx
% Biased AR: A neural architecture that shifts attention towards previously disregarded features 
% following an incorrect prediction.
% Boston, MA: Boston University.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Programmed by Sai Chaitanya Gaddam(May 2007-09)
%%%%%%%%%%%%%%%%%%%%%%%%%
%
% The notation follows the article's notation,
% as does the headers for each step of the
% algorithm

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



function dataStructTemp  = createDataStruct(in_mat,row_col_string,labels_end_begin,perc_train,data_description,varargin)

if strcmp(row_col_string,'rows')
    rand_order=randperm(size(in_mat,1));
    %rand_order=[1:1:size(in_mat,1)];
    in_mat= in_mat(rand_order,:);
elseif strcmp(row_col_string,'cols')
    in_mat=in_mat';
    rand_order=randperm(size(in_mat,1));
    %rand_order=[1:1:size(in_mat,1)];
    in_mat= in_mat(rand_order,:);
end

if strcmp(labels_end_begin,'end')
    label_vals=in_mat(:,end);
    in_mat=in_mat(:,1:end-1);

elseif strcmp(labels_end_begin,'begin')
    label_vals=in_mat(:,1);
    in_mat=in_mat(:,2:end);
end

%%%%Make sure all features are 0-1 range

max_vals=max(in_mat,[],1);
min_vals=min(in_mat,[],1);
mean_vals=mean(in_mat,1);
std_vals=std(in_mat,1);

if size(in_mat,2)<50
disp('max')
disp(max_vals)
disp('min')
disp(min_vals);
disp('mean')
disp(mean_vals)
disp('std')
disp(std_vals)
else
    figure(1)
    subplot(4,1,1)
    bar(max_vals);
    title('max')
    subplot(4,1,2)
    bar(min_vals);
    title('min');
    subplot(4,1,3)
    bar(mean_vals);
    title('mean');
    subplot(4,1,4)
    bar(std_vals);
    title('std');

    
end


%%%Shift into 0+%%%%%
in_mat=in_mat-repmat(min(min_vals,0),size(in_mat,1),1);

disp('After shift into 0+')

max_vals=max(in_mat,[],1);
min_vals=min(in_mat,[],1);
mean_vals=mean(in_mat,1);
std_vals=std(in_mat,1);

if size(in_mat,2)<50
disp('max')
disp(max_vals)
disp('min')
disp(min_vals);
disp('mean')
disp(mean_vals)
disp('std')
disp(std_vals)
else
    figure(2)
    subplot(4,1,1)
    bar(max_vals);
    title('max')
    subplot(4,1,2)
    bar(min_vals);
    title('min');
    subplot(4,1,3)
    bar(mean_vals);
    title('mean');
    subplot(4,1,4)
    bar(std_vals);
    title('std');

    
end

%%%Compress into 0-1
in_mat=in_mat./repmat(max(max_vals,1),size(in_mat,1),1);

disp('After compression into [0-1]')

max_vals=max(in_mat,[],1);
min_vals=min(in_mat,[],1);
mean_vals=mean(in_mat,1);
std_vals=std(in_mat,1);

if size(in_mat,2)<50
disp('max')
disp(max_vals)
disp('min')
disp(min_vals);
disp('mean')
disp(mean_vals)
disp('std')
disp(std_vals)
else
    figure(3)
    subplot(4,1,1)
    bar(max_vals);
    title('max')
    subplot(4,1,2)
    bar(min_vals);
    title('min');
    subplot(4,1,3)
    bar(mean_vals);
    title('mean');
    subplot(4,1,4)
    bar(std_vals);
    title('std');

    
end
%%%%%%%%%%%%%

label_vals=label_vals(:);
if (min(label_vals)==0)
    disp('Shifting labels from [0 n-1]to [1 n]')
    label_vals=label_vals+1;
elseif (min(label_vals)==0)
    error('Weird: Labels are negative');
end


num_train=round(perc_train*size(in_mat,1)/100);
dataStructTemp.training_input=in_mat(1:num_train,:)';
dataStructTemp.training_output=label_vals(1:num_train);
dataStructTemp.test_input=in_mat(num_train+1:end,:)';
dataStructTemp.test_output=label_vals(num_train+1:end);
dataStructTemp.description=data_description;
dataStructTemp.descriptionVerbose=data_description;
if (nargin==5)
dataStructTemp.randOrderTrain=rand_order(1:num_train);
dataStructTemp.randOrderTest=rand_order(num_train+1:end);
else
dataStructTemp.randOrderTrain=varargin{1}(rand_order(1:num_train));
dataStructTemp.randOrderTest=varargin{1}(rand_order(num_train+1:end));
end


Contact us at files@mathworks.com