예제 #1
0
   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)
예제 #2
0
   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)