def make_plot_RMACCURACYFM(self): # This graph shows the time spent training vs. the data set size exp_no = RMACCURACYFM plot_dir = OUTPUT_DIR + "rm_accuracyfm/" os.mkdir(plot_dir) gnuplot_script = open(plot_dir + 'plot.gp', 'w') print >> gnuplot_script, """ set terminal png nocrop enhanced size 400, 400 set output "plot.png" set xlabel "Granularity" set ylabel "Median Error" set nokey set title "Reverse Mapping Accuracy vs. FM (%s)" """ % self._exp.name mi = int(numpy.floor(2 * self._exp.rm_granularities[0] - self._exp.rm_granularities[1])) ma = int(numpy.ceil(2 * self._exp.rm_granularities[-1] - self._exp.rm_granularities[-2])) print >> gnuplot_script, "set xrange [%d:%d]" % (mi, ma) print >> gnuplot_script, 'plot "rm_times" with errorbars, "rm_times" with lines', print >> gnuplot_script, '\n', gnuplot_script.close() out_file = open(plot_dir + "rm_times", 'w') for gran in self._exp.rm_granularities: times = self._rm_results[gran][exp_no] avg, lower, upper = misc.doublesided( abs(x[0]) for x in times ) # FIXME : only works for 1 parameter! print >> out_file, "%d %f %f %f" % (gran, avg, lower, upper) out_file.close() curdir = os.path.abspath('.') os.chdir(plot_dir) os.system('gnuplot ' +'plot.gp') os.chdir(curdir)
def make_plot_FMACCURACY(self): # This graph shows the time spent training vs. the data set size # THIS ONLY DOES ONE SLP RIGHT NOW!!! (for fires!) TODO FIXME exp_no = FMACCURACY plot_dir = OUTPUT_DIR + "fm_accuracy/" os.mkdir(plot_dir) # gotta find the max deviation seen, ever, so that I can make all the # graphs have the same y-scale maerr = 0.0 for reg, params in self._exp.regressions: label = labelize(reg, params) for training_size in self._exp.training_sizes: key = (label, training_size) maxerror = max([ abs(x) for x in self._fm_results[key][exp_no]]) # FIXME maerr = max(maerr, maxerror) for reg, params in self._exp.regressions: label = labelize(reg, params) gnuplot_script = open(plot_dir + 'plot-%s.gp' % reg.name, 'w') print >> gnuplot_script, """ set terminal png nocrop enhanced size 400, 400 set output "plot-%s.png" set xlabel "Data Set Size" set ylabel "Median Error" set key top right set title "Forward Mapping Accuracy (%s)" """ % (reg.name, self._exp.name) mi = int(numpy.floor(2 * self._exp.training_sizes[0] - self._exp.training_sizes[1])) ma = int(numpy.ceil(2 * self._exp.training_sizes[-1] - self._exp.training_sizes[-2])) print >> gnuplot_script, "set xrange [%d:%d]" % (mi, ma) print >> gnuplot_script, "set yrange [0:%.4f]" % (maerr * 1.1 * MAGIC_YSCALE_FM_ACCURACY) print >> gnuplot_script, 'plot ', out_file = open(plot_dir + "%s" % reg.name, 'w') print >> gnuplot_script, '"%s" with errorbars' % reg.name, for training_size in self._exp.training_sizes: key = (label, training_size) # this is the list of deviations errors = [ abs(x) for x in self._fm_results[key][exp_no]] # FIXME # average them median, lower, upper = misc.doublesided(errors) print >> out_file, "%d %f %f %f" % (training_size, median, lower, upper) out_file.close() print >> gnuplot_script, '\n', gnuplot_script.close() curdir = os.path.abspath('.') os.chdir(plot_dir) os.system('gnuplot ' + 'plot-%s.gp' % reg.name) os.chdir(curdir)