#!/bin/csh # csh script to run NBC on a dataset # using cross validation technique # the resulting accuracy is saved in a file called accuracy # cv if ($2 == "") then echo call as: echo " cv " exit endif if ($2 == 1) then echo the number of folds, given as $2, must be more than 1. exit endif if (-r /olympush/project/data/$1.data) then \cp /olympush/project/data/$1.data . else echo /olympush/project/data/$1.data does not exist. exit endif if (-r /olympush/project/data/$1.info) then \cp /olympush/project/data/$1.info . else echo /olympush/project/data/$1.info does not exist. exit endif \rm -f $1.cv.nbc $1.res set size = `wc -l $1.data` @ size = $size[1] @ minrange = $size / $2 @ remaining = $size % $2 @ i = 1 @ start = 1 while ($i <= $2 ) @ range = $minrange if ($remaining > 0) @ range++ if ($remaining > 0) @ remaining-- /olympush/project/tools/d2tt $1 $start $range ./nbc $1 cat $1.res >> $1.cv.nbc @ start = $start + $range @ i++ end set accuracy = `awk '{print $2}' $1.cv.nbc | /olympush/project/tools/avg` set traintime = `awk '{print $4}' $1.cv.nbc | /olympush/project/tools/avg` set testtime = `awk '{print $6}' $1.cv.nbc | /olympush/project/tools/avg` echo $accuracy echo NBC for Domain: $1 Way: $2 Accuracy: $accuracy Train: $traintime Test: $testtime>>$1.$2.nbc /bin/rm $1.data $1.info $1.train $1.test $1.res