about summary refs log tree commit diff
path: root/sourcecodes/parameter_learning/code_backup/looCrossValid.m
diff options
context:
space:
mode:
Diffstat (limited to 'sourcecodes/parameter_learning/code_backup/looCrossValid.m')
-rw-r--r--sourcecodes/parameter_learning/code_backup/looCrossValid.m241
1 files changed, 0 insertions, 241 deletions
diff --git a/sourcecodes/parameter_learning/code_backup/looCrossValid.m b/sourcecodes/parameter_learning/code_backup/looCrossValid.m
deleted file mode 100644
index 21d6560d..00000000
--- a/sourcecodes/parameter_learning/code_backup/looCrossValid.m
+++ /dev/null
@@ -1,241 +0,0 @@
-function looCrossValid(pre,predict_label)
-% This function will peform leave-one-out cross-validation.
-% This requires the specification of the name of the variable
-%   that you want to predict.
-% For now, I will assume that the variable is a discrete variable.
-
-
-
-sfile=strcat(pre,'structure_input.txt');
-dfile=strcat(pre,'continuous_input.txt');
-nnodefile=strcat(pre,'nnode.txt');
-fnnode = fopen(nnodefile,'r');
-nnodes = fscanf(fnnode,'%d');
-
-Std_flag=true;
-[labels,cases,bnet]=readInput(dfile,sfile,nnodes,Std_flag);
-
-for i=1:nnodes
-    if strcmp(labels(i),predict_label)
-       predict_node = i;
-    end
-end
-
-predict_cases = bnet.node_sizes(predict_node);
-
-if predict_cases == 1
-	looCV_continuous(pre,predict_label,nnodes,labels,cases,bnet,predict_node,predict_cases);
-else
-	looCV_discrete(pre,predict_label,nnodes,labels,cases,bnet,predict_node,predict_cases);
-endif
-
-end
-
-function looCV_continuous(pre,predict_label,nnodes,labels,cases,bnet,predict_node,predict_cases)
-
-ncases = size(cases,2);
-
-%%Read in original means and standard deviations to report output as
-%% untransformed values.
-means_orig=cell(1,nnodes);
-stdevs_orig=cell(1,nnodes);
-labels_orig=cell(1,nnodes);
-%Read in original means and standard deviations
-mapfile = strcat(pre,'map.txt');
-fmap = fopen(mapfile,'r');
-for i=1:nnodes
-    buffer = fgetl(mapfile);
-    temp = cell(1,3);
-    for j=1:3
-        [next,buffer] = strtok(buffer);
-	temp{j} = next;
-    end
-    labels_orig{i} = temp{1};
-    means_orig{i} = str2num(temp{3});
-    stdevs_orig{i} = str2num(temp{2});
-end
-fclose(fmap);
-%Need to map the means and stdevs to the correct labels
-means = cell(1,nnodes);
-stdevs = cell(1,nnodes);
-%Read in labels in new order.
-labelsnew = cell(1,nnodes);
-mapdatafile = strcat(pre,'mapdata.txt');
-fmapdata = fopen(mapdatafile,'r');
-buffer = fgetl(fmapdata);
-for i = 1:nnodes
-    [next,buffer ] = strtok(buffer);
-    labelsnew{i} = next;
-end
-fclose(fmapdata);
-for i = 1:nnodes
-    for j = 1:nnodes
-       if strcmp(labelsnew{i},labels_orig{j})
-          means{i} = means_orig{j};
-          stdevs{i} = stdevs_orig{j};
-          break
-       end
-    end
-end
-
-
-loopredictions=zeros(size(cases,2),2);
-
-%t=cputime;
-%First get loo predictions
-for i =1:ncases
-%  i
-  current_data = cases(:,i);
-  cases_new = cases;
-  cases_new(:,i) = [];
-  evidence = current_data;
-  evidence{predict_node} = {};
-  [bnet]=parameterLearning(bnet,cases_new);
-  engine = jtree_inf_engine(bnet);
-  [engine,loglik] = enter_evidence(engine,evidence);
-  predict = marginal_nodes(engine,predict_node);
-  adj_mu = predict.mu*stdevs{predict_node}+means{predict_node};
-  adj_sigma = stdevs{predict_node}*predict.Sigma;
-  loopredictions(i,1) = adj_mu;
-  loopredictions(i,2) = adj_sigma;
-end
-%e=cputime-t;
-
-
-%Open output file.
-filename = strcat(pre,'looCV.txt');
-fileID = fopen(filename,'w');
-
-fprintf(fileID,'Variable that was predicted: %s\n\n',predict_label);
-
-
-%%Print the predictions
-fprintf(fileID,'Predicted mean and standard deviation for each case:\n');
-fprintf(fileID,'Mean\tStDev\n');
-for i = 1:ncases
-     fprintf(fileID,'%i\t',i);
-     fprintf(fileID,'%6.4f\t%6.4f\n',loopredictions(i,:));
-end
-
-end
-
-
-function looCV_discrete(pre,predict_label,nnodes,labels,cases,bnet,predict_node,predict_cases)
-
-ncases = size(cases,2);
-
-%This next section just gets the original names of the levels.
-% so they can be written to the output file.
-%%Get the maximum_number of states so array will be big enough
-%%Add 1 because the input includes the node name
-max_states = max(bnet.node_sizes) + 1;
-disc_nodes = size(bnet.dnodes,2);
-
-%%Get mapping of discrete levels.
-levelfile = strcat(pre,'nlevels.txt');
-flevels = fopen(levelfile,'r');
-levels = cell(disc_nodes,max_states);
-ndisc_nodes = 0;
-for i=1:disc_nodes
-    ndisc_nodes = ndisc_nodes + 1;
-    buffer = fgetl(flevels);
-     for j = 1:max_states
-       [next,buffer] = strtok(buffer);
-       if j == 1
-          levels{i,j} = next;
-       else
-%          levels{i,j} = uint16(str2num(next));
-          levels{i,j} = next;
-       end
-       if length(buffer) < 1
-        break
-       end
-     end
-end
-
-pred_levels = cell(1,predict_cases);
-for i = 1:disc_nodes
-   if strcmp(levels{i,1},predict_label);
-	for j = 1:predict_cases
-	    pred_levels{j} = levels{i,j+1};
-	end
-        break
-   end
-end
-
-loopredictions=zeros(size(cases,2),predict_cases);
-
-%t=cputime;
-%First get loo predictions
-for i =1:ncases
-%  i
-  current_data = cases(:,i);
-  cases_new = cases;
-  cases_new(:,i) = [];
-  evidence = current_data;
-  evidence{predict_node} = {};
-
-  [bnet]=parameterLearning(bnet,cases_new);
-  engine = jtree_inf_engine(bnet);
-  [engine,loglik] = enter_evidence(engine,evidence);
-  predict = marginal_nodes(engine,predict_node);
-  for j = 1:predict_cases
-	loopredictions(i,j) = predict.T(j);
-  end
-end
-%e=cputime-t;
-
-%Now compare with actual outcomes
-actual_states = zeros(1,predict_cases);
-for i=1:ncases
-    for j = 1:predict_cases
-	if cell2mat(cases(predict_node,i)) == j
-           actual_states(j) = actual_states(j) + 1;
-	end
-    end
-end
-
-actual_states;
-pred_states = zeros(1,ncases);
-
-for i=1:ncases
-    max_state = 1;
-    for j = 2:predict_cases
-       if loopredictions(i,j) > loopredictions(i,max_state)
-           max_state = j;
-	end
-    end
-    pred_states(i) = max_state;
-end
-
-correct = 0;
-for i=1:ncases
-    if pred_states(i) == cell2mat(cases(predict_node,i))
-	correct = correct + 1;
-    end
-end
-
-accuracy = correct/ncases;
-
-%Open output file.
-filename = strcat(pre,'looCV.txt');
-fileID = fopen(filename,'w');
-
-fprintf(fileID,'Variable that was predicted: %s\n\n',predict_label);
-
-
-%%Print the accuracy
-fprintf(fileID,'Fraction of accurate predictions: %6.4f\n\n',accuracy);
-
-%%Print the predictions
-fprintf(fileID,'Predicted likelihood of each state for each case:\n');
-fprintf(fileID,'%s\t','Case');
-fprintf(fileID,'%s\t',pred_levels{1:end-1});
-fprintf(fileID,'%s\n',pred_levels{end});
-for i = 1:ncases
-     fprintf(fileID,'%i\t',i);
-     fprintf(fileID,'%6.4f\t',loopredictions(i,1:end-1));
-     fprintf(fileID,'%6.4f\n',loopredictions(i,end));
-end
-
-end