Predicting Mortality of ICU Patients: The PhysioNet/Computing in Cardiology Challenge 2012 1.0.0
(1,407 bytes)
function [ f_out ] = BRF_CompactForest(f_out)
% BRF_CompactForest Compacts forest so evaluations are quick
%
% $LastChangedBy: alistair $
% $LastChangedDate: 2012-05-30 12:21:30 +0100 (Wed, 30 May 2012) $
% $Revision: 21 $
% Originally written on MACI64 by Louis Mayaud, 25-April-2012 14:05:26
% Contact: alistairewj@gmail.com
forests = f_out.forests;
% priors = f_out.priors;
% e1 = f_out.e1;
NaNNbre = f_out.TrainNaN;
% family = f_out.Family;
xtrain = f_out.xtrain;
xtrain_rk = tiedrankrelative(xtrain,true(size(xtrain,1),1));
Ntrees = size(forests,3)-1;
nan_placement = false(2,Ntrees,size(forests,1));
for i = 1:size(forests,1)
% determine missing value assignments for each index on training set
forest = reshape(forests(i,:,:),[size(forests,2),size(forests,3)]);
% first split value [0,1] * number of non-nan values
i1 = forest(1,1:Ntrees);
i4 = forest(4,1:Ntrees);
i7 = forest(7,1:Ntrees);
i1_NaN = NaNNbre(i1);
obs1train = sum(bsxfun(@gt, xtrain_rk(:,i1),i4.*i1_NaN),1);
obs1train = i1_NaN.*i7 < obs1train;
nan_placement(1,:,i) = obs1train;
i2 = forest(2,1:Ntrees);
i5 = forest(5,1:Ntrees);
i8 = forest(8,1:Ntrees);
i2_NaN = NaNNbre(i2);
obs2train = i2_NaN.*i8 < sum(bsxfun(@gt, xtrain_rk(:,i2),i5.*i2_NaN),1);
nan_placement(2,:,i) = obs2train;
end
f_out.nan_placement = nan_placement;
end