In [1]:
%pylab inline


Populating the interactive namespace from numpy and matplotlib

In [2]:
log_folder = 'ik-learning/logs/grid-gridsearch/'
tc = load('ik-learning/tc-grid.npy')

In [3]:
names = ['rm-knn-default', 'rg-knn-default', 'dpg-knn-default']

for xc in map(lambda x: x ** 3, [2, 3, 5, 7, 10, 16]):
    for ws in [5, 10, 20, 50, 75, 100, 200]:
        name = '{}-xcard-{}-winsize-{}'.format('dpg-knn', xc, ws)
        names.append(name)

In [4]:
import os
import glob
import pickle

from collections import defaultdict

logs = {}

for name in names:
    xps = glob.glob('{}/{}-*.logs'.format(log_folder, name))
                
    l = []
    for xp in xps:
        with open(xp) as f:
            l.append(pickle.load(f))  
                    
    logs[name] = l
    print len(l), 'log(s) found for', name


0 log(s) found for rm-knn-default
0 log(s) found for rg-knn-default
0 log(s) found for dpg-knn-default
6 log(s) found for dpg-knn-xcard-8-winsize-5
15 log(s) found for dpg-knn-xcard-8-winsize-10
8 log(s) found for dpg-knn-xcard-8-winsize-20
7 log(s) found for dpg-knn-xcard-8-winsize-50
8 log(s) found for dpg-knn-xcard-8-winsize-75
6 log(s) found for dpg-knn-xcard-8-winsize-100
7 log(s) found for dpg-knn-xcard-8-winsize-200
6 log(s) found for dpg-knn-xcard-27-winsize-5
6 log(s) found for dpg-knn-xcard-27-winsize-10
6 log(s) found for dpg-knn-xcard-27-winsize-20
5 log(s) found for dpg-knn-xcard-27-winsize-50
6 log(s) found for dpg-knn-xcard-27-winsize-75
7 log(s) found for dpg-knn-xcard-27-winsize-100
3 log(s) found for dpg-knn-xcard-27-winsize-200
16 log(s) found for dpg-knn-xcard-125-winsize-5
14 log(s) found for dpg-knn-xcard-125-winsize-10
11 log(s) found for dpg-knn-xcard-125-winsize-20
15 log(s) found for dpg-knn-xcard-125-winsize-50
5 log(s) found for dpg-knn-xcard-125-winsize-75
9 log(s) found for dpg-knn-xcard-125-winsize-100
4 log(s) found for dpg-knn-xcard-125-winsize-200
4 log(s) found for dpg-knn-xcard-343-winsize-5
3 log(s) found for dpg-knn-xcard-343-winsize-10
10 log(s) found for dpg-knn-xcard-343-winsize-20
10 log(s) found for dpg-knn-xcard-343-winsize-50
6 log(s) found for dpg-knn-xcard-343-winsize-75
5 log(s) found for dpg-knn-xcard-343-winsize-100
7 log(s) found for dpg-knn-xcard-343-winsize-200
7 log(s) found for dpg-knn-xcard-1000-winsize-5
6 log(s) found for dpg-knn-xcard-1000-winsize-10
7 log(s) found for dpg-knn-xcard-1000-winsize-20
7 log(s) found for dpg-knn-xcard-1000-winsize-50
7 log(s) found for dpg-knn-xcard-1000-winsize-75
9 log(s) found for dpg-knn-xcard-1000-winsize-100
7 log(s) found for dpg-knn-xcard-1000-winsize-200
6 log(s) found for dpg-knn-xcard-4096-winsize-5
6 log(s) found for dpg-knn-xcard-4096-winsize-10
4 log(s) found for dpg-knn-xcard-4096-winsize-20
8 log(s) found for dpg-knn-xcard-4096-winsize-50
5 log(s) found for dpg-knn-xcard-4096-winsize-75
7 log(s) found for dpg-knn-xcard-4096-winsize-100
9 log(s) found for dpg-knn-xcard-4096-winsize-200

In [5]:
from mpltools import special

def plot_one(name):
    err = [xp.eval_errors for xp in logs[name]]
    if not err:
        return
    
    err = array(err)
            
    special.errorfill(x=xp.eval_at, y=err.mean(axis=-1).mean(axis=0), 
                      yerr=err.std(axis=-1).mean(axis=0) / sqrt(len(err)))
    ylim(0, 0.5)
    
def plot_compare(*poss):
    [plot_one(n) for n in poss]
    
    labels = ['{}'.format(n) for n in poss]
    legend(labels)

In [6]:
plot_compare(('rm-knn-default'), 
             ('rg-knn-default'), 
             ('dpg-knn-default'))
#xlim(0, 250)



In [7]:
from IPython.html.widgets import interact
    
interact(plot_one, name=names)


Out[7]:
<function __main__.plot_one>

In [8]:
names = ['dpg-knn-default', ]

for xc in map(lambda x: x ** 3, [2, 3, 5, 7, 10, 16]):
    names.append('dpg-knn-xcard-{}-winsize-10'.format(xc))

plot_compare(*names)
xlim(0, 1000)


Out[8]:
(0, 1000)

In [9]:
names = ['dpg-knn-default', ]

for ws in [5, 10, 20, 50, 75, 100, 200]:
    names.append('dpg-knn-xcard-343-winsize-{}'.format(ws))

plot_compare(*names)
xlim(0, 1000)


Out[9]:
(0, 1000)

In [10]:
def heat(eval_i):
    names = []

    XC = map(lambda x: x ** 3, [2, 3, 5, 7, 10, 16])
    WS = [5, 10, 20, 50, 75, 100, 200]

    ee = zeros((len(XC), len(WS)))

    for i, xc in enumerate(XC):
        for j, ws in enumerate(WS):
            name = 'dpg-knn-xcard-{}-winsize-{}'.format(xc, ws)

            err = [xp.eval_errors for xp in logs[name]]    
            err = array(err)
            err = err.mean(axis=-1).mean(axis=0)
            e = err[eval_i]
            ee[i, j] = e

    ee[ee == -10] = ee.max()

    ax = axes()
    ax.imshow(ee.T, interpolation='nearest')
    ax.set_ylabel('win size')
    ax.set_yticklabels([0] + WS)
    ax.set_xlabel('x card')
    ax.set_xticklabels([0] + XC)
    
    print 'Evaluation at', xp.eval_at[eval_i]
    print 'Mean dist min', ee.min(), 'at', unravel_index(ee.argmin(), ee.shape)
    print 'Mean dist max', ee.max(), 'at', unravel_index(ee.argmax(), ee.shape)

xp = logs.values()[0][0]
interact(heat, eval_i=(0, len(xp.eval_at) - 1))


Evaluation at 3000
Mean dist min 0.265505176252 at (2, 6)
Mean dist max 0.292746205417 at (5, 6)

In [11]:
plot_compare(('rm-knn-default'), 
             ('rg-knn-default'), 
             ('dpg-knn-default'),
             ('dpg-knn-xcard-1000-winsize-5'))

xlim(0, 250)


Out[11]:
(0, 250)

In [12]:
with open(glob.glob(log_folder + 'dpg-knn-xcard-1000-winsize-5-*.logs')[0]) as f:
    goal_xp = pickle.load(f)
    
ax = axes()
goal_xp.scatter_plot(ax, (('sensori', [0, 1]), ),  color='b')
goal_xp.scatter_plot(ax, (('choice', [0, 1]), ),  color='r', marker='+')
ax.scatter(tc[:, 0], tc[:, 1], color='g', s=40)


Out[12]:
<matplotlib.collections.PathCollection at 0x1280d3250>

In [13]:
with open(glob.glob(log_folder + 'rg-knn-default-*.logs')[0]) as f:
    goal_xp = pickle.load(f)
    
ax = axes()
goal_xp.scatter_plot(ax, (('sensori', [0, 1]), ),  color='b')
goal_xp.scatter_plot(ax, (('choice', [0, 1]), ),  color='r', marker='+')
ax.scatter(tc[:, 0], tc[:, 1], color='g', s=40)


---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-13-7f5697949b2e> in <module>()
----> 1 with open(glob.glob(log_folder + 'rg-knn-default-*.logs')[0]) as f:
      2     goal_xp = pickle.load(f)
      3 
      4 ax = axes()
      5 goal_xp.scatter_plot(ax, (('sensori', [0, 1]), ),  color='b')

IndexError: list index out of range

In [ ]:
plot_compare(('rm-knn-default'), 
             ('rg-knn-default'), 
             ('dpg-knn-default'),
             ('dpg-knn-xcard-1000-winsize-5'))

xlim(2500, 3000)
ylim(0, 0.1)

In [ ]: