In [1]:
import numpy as np
import numpy.random as npr
import matplotlib.pyplot as plt
%matplotlib inline

In [34]:
from sklearn.datasets import load_digits
data = load_digits()
X_tot,Y_tot = load_digits().data,load_digits().target

In [8]:
len(X_tot)


Out[8]:
1797

In [9]:
split = 500
X = X_tot[:split]
Y = Y_tot[:split]
X_test = X_tot[split:]
Y_test = Y_tot[split:]

In [10]:
from scipy.spatial.distance import pdist,squareform

In [11]:
# stochastic neighbor assignments
def stoch_neighbor_assignments(X):
    P = squareform(np.exp(-(pdist(X)**2)))
    P -= np.diag(P)
    return np.nan_to_num(P/P.sum(1)) # columns sum to 1

In [62]:
P = squareform(np.exp(-(pdist(X)**2)))
P -= np.diag(P)
sum(P.sum(1)==0)


Out[62]:
8

In [ ]:


In [12]:
P = stoch_neighbor_assignments(X)
np.sum(P != 0)


/Users/joshuafass/anaconda/envs/py27/lib/python2.7/site-packages/IPython/kernel/__main__.py:5: RuntimeWarning: invalid value encountered in divide
Out[12]:
6912

In [13]:
np.max(P),np.min(P)


Out[13]:
(1.0, 0.0)

In [14]:
np.sum(np.nan_to_num(P)!=0)


Out[14]:
6912

In [15]:
plt.imshow(P,interpolation='none',cmap='Blues')
plt.colorbar()


Out[15]:
<matplotlib.colorbar.Colorbar instance at 0x110fdb2d8>

In [16]:
# probability that point 0 will be classified correctly
sum(P.T[10,Y==Y[10]])


Out[16]:
1.0

In [17]:
def correct_classification_prob(P,Y):
    p = np.array([sum(P.T[i,Y==Y[i]]) for i in range(len(P))])
    return p

In [18]:
def correct_classification_prob_vec(P,Y):
    Y_ = np.vstack([Y==y for y in Y])
    return P[Y_]

In [19]:
def exp_class_accuracy_vectorized(P,Y):
    Y_ = np.vstack([Y==y for y in Y])
    return P[Y_].sum()/len(Y)

In [ ]:


In [20]:
%timeit sum(correct_classification_prob(P,Y))


100 loops, best of 3: 5.62 ms per loop

In [21]:
sum(correct_classification_prob(P,Y))


Out[21]:
487.73105857862811

In [22]:
%timeit correct_classification_prob_vec(P,Y)


100 loops, best of 3: 2.34 ms per loop

In [23]:
%timeit exp_class_accuracy_vectorized(P,Y)


100 loops, best of 3: 2.38 ms per loop

In [24]:
sum(correct_classification_prob_vec(P,Y))


Out[24]:
487.73105857862816

In [ ]:


In [25]:
sum(correct_classification_prob_vec(P,Y))/len(Y)


Out[25]:
0.97546211715725628

In [26]:
%timeit np.vstack([Y==y for y in Y])


100 loops, best of 3: 2.01 ms per loop

In [27]:
# expected number of points correctly classified
p = correct_classification_prob(P,Y)
correct_class_expectation = sum(p) / len(p)
correct_class_expectation


Out[27]:
0.97546211715725617

In [28]:
plt.hist(p,bins=50);



In [29]:
sum(p<0.5)


Out[29]:
12

In [35]:
outlier_images = data.images[p<0.5]

In [36]:
for image in outlier_images[:5]:
    plt.figure()
    plt.imshow(-image,cmap='gray',interpolation='none')



In [37]:
np.argmin(p)


Out[37]:
5

In [38]:
plt.imshow(-data.images[np.argmin(p)],cmap='gray',interpolation='none')


Out[38]:
<matplotlib.image.AxesImage at 0x112810990>

In [39]:
sum(p==1)


Out[39]:
439

In [40]:
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X_ = pca.fit_transform(X)
X_.shape


Out[40]:
(500, 2)

In [41]:
P_ = stoch_neighbor_assignments(X_)
p_ = correct_classification_prob(P_,Y)
correct_class_expectation_ = sum(p_) / len(p_)
correct_class_expectation_


Out[41]:
0.66150737689602468

In [42]:
plt.hist(p_,bins=50);



In [43]:
# objective: find a transformation f(X) that 
# maximizes correct_classification_prob(f(X),Y)

In [44]:
A = np.random.randn(2,X.shape[1])

In [45]:
A.dot(X.T).shape


Out[45]:
(2, 500)

In [46]:
np.sum(X.dot(A.T) - A.dot(X.T).T)


Out[46]:
7.7182704671940883e-13

In [47]:
X.dot(A.T),A.dot(X.T).T


Out[47]:
(array([[ -3.18056146e+01,  -2.97813485e+01],
        [ -3.63458015e+01,   8.30585643e+00],
        [ -2.09108800e+01,  -2.33695473e+01],
        [ -4.58936445e+01,  -7.14065100e+01],
        [  2.01026705e+01,  -4.02875781e+01],
        [ -4.31356612e+01,  -8.04194320e+01],
        [  1.45908831e+01,   5.25960781e+01],
        [ -3.43060970e+01,  -1.65129691e+01],
        [ -2.71594422e+01,  -5.58981872e+01],
        [ -1.06302716e+01,  -9.71334128e+00],
        [ -1.34055907e+01,   4.06932982e+00],
        [ -6.48772248e+01,  -9.99818923e+01],
        [  6.17220900e+01,   3.88076286e+01],
        [ -7.87137261e+01,  -1.23885710e+02],
        [  1.79000414e+00,  -1.09516498e+01],
        [  3.70752976e+01,   7.07269605e+01],
        [ -4.62478912e+01,   1.42070942e+01],
        [  7.01626969e+00,  -5.90680303e+00],
        [ -2.03178979e+01,  -6.78746281e+00],
        [ -3.81935518e+01,  -6.23071134e+01],
        [  3.47657549e+00,   6.10867647e+00],
        [ -7.24484063e+01,  -9.12444381e+01],
        [  1.69865679e+01,   1.29779619e+01],
        [ -3.42893822e+01,  -9.60668678e+01],
        [  5.31382918e-01,  -5.40893495e+01],
        [  3.14872836e+01,   9.24077579e+01],
        [ -3.30649479e+00,   4.82906575e+01],
        [ -6.19176118e+01,  -3.51729418e+01],
        [  1.96264440e+01,   4.63540026e+00],
        [ -3.51823680e+01,  -4.77689276e+01],
        [  4.06663131e+00,  -3.81619526e+01],
        [ -5.80755850e+01,  -6.70327609e+01],
        [  2.30214723e+01,   1.39103088e+01],
        [  2.12692568e+01,   3.40720986e+01],
        [ -2.59019724e+01,   2.31307218e+01],
        [  4.26235349e+01,   6.96782067e+01],
        [  2.09538425e+01,   1.96999464e+01],
        [ -1.15460054e+01,  -2.95797110e+01],
        [ -3.66425907e+01,   4.19972394e+00],
        [ -7.08280318e+01,  -9.00701096e+01],
        [ -1.70225664e+01,  -4.62291557e+01],
        [  4.27509036e+01,   3.60875222e+01],
        [ -1.29475125e+01,  -6.55334920e+01],
        [ -1.33696926e+01,   2.61025288e+01],
        [ -1.85574167e+01,  -7.93571344e+00],
        [ -7.76461669e+01,  -9.78920435e+01],
        [  2.96026102e+01,   6.53760729e+01],
        [ -2.26232641e+01,  -6.32096356e+01],
        [ -2.28425322e+01,   3.38167625e+01],
        [ -4.63267096e+01,   8.87424143e-01],
        [ -3.99389896e+01,  -1.28779067e+01],
        [ -2.84496198e+01,  -4.01117305e+01],
        [ -2.88998525e+01,  -2.69647059e+00],
        [ -6.59461988e+00,  -1.84794298e+01],
        [ -2.31106818e+01,  -3.54517110e+01],
        [ -1.93601002e+01,  -1.32482279e+01],
        [ -3.53706430e+01,  -6.83001855e+01],
        [ -2.27184037e+01,  -3.40336602e+01],
        [  1.66592523e+01,   5.37210183e+01],
        [ -3.93270993e+01,  -9.70180290e+01],
        [ -7.51101639e+01,  -1.35175447e+02],
        [  2.18201340e+01,  -2.52664297e+01],
        [ -6.67274216e+01,  -1.25149569e+02],
        [ -4.12820724e+01,  -9.66679258e+01],
        [  1.39266037e+01,  -1.54018934e+01],
        [  8.88474950e-01,   6.37597391e+01],
        [  2.10208470e+01,   6.47563063e+01],
        [  7.07707629e+01,   3.65370439e+01],
        [  3.63315648e+01,   8.00405302e+01],
        [ -1.10753452e+01,   2.64828941e+01],
        [ -2.31774694e+01,  -2.96284612e+01],
        [  3.00009398e+01,   4.11152875e+01],
        [  5.54529527e+00,  -1.45040123e+01],
        [ -3.54770693e+01,  -8.18263667e+01],
        [  4.34214656e+00,   2.96187062e+01],
        [ -8.11220961e+00,  -7.39890174e+01],
        [  2.65747575e+01,   5.81081804e+01],
        [ -4.79076881e+01,  -1.12323154e+02],
        [ -1.26073619e+01,  -2.48344126e+01],
        [ -2.76160375e+01,  -1.39669644e+00],
        [ -4.92698149e+01,  -5.78872163e+01],
        [ -4.76197101e+00,   1.43730729e+01],
        [  9.96552552e+00,   5.64332798e+01],
        [ -1.43734045e+01,  -9.27335685e+01],
        [ -3.81166799e+00,   1.02153448e+01],
        [ -1.70817771e+01,  -9.26831397e+00],
        [ -2.52036884e+01,  -5.21023268e+01],
        [  4.17507834e+01,   8.08653506e+01],
        [  1.22180282e+00,   6.29861066e+01],
        [ -4.40185286e+01,  -1.22236333e+02],
        [ -1.48180921e+01,  -4.88339826e+01],
        [ -1.37808807e+01,  -1.02513869e+02],
        [ -5.48923185e+01,  -1.27561963e+02],
        [ -1.47456267e+01,   2.40516555e+01],
        [ -1.73808922e+00,  -1.06630718e+01],
        [ -8.12048473e+00,   4.26860416e+01],
        [ -1.89925948e+00,   1.08394697e+01],
        [  1.75460489e+01,  -3.87903219e+00],
        [ -4.86536438e+01,  -1.27168722e+02],
        [  3.13161399e+01,   8.39852173e+01],
        [  3.80991138e+01,  -2.87304312e+01],
        [ -1.20617078e+01,  -2.33461967e+01],
        [  2.02390185e+01,   6.78786908e+01],
        [ -3.90323787e+01,  -3.50137676e+01],
        [  3.17515708e+01,   8.57346677e+01],
        [ -4.85334577e+01,  -7.11278444e+01],
        [ -9.59398068e+00,   2.92564622e+01],
        [ -3.86557710e+01,  -9.82756666e+01],
        [  1.64717830e+01,   2.60985133e+00],
        [  3.52010365e+00,   5.43377497e+01],
        [  2.23486350e+01,   6.49388479e+01],
        [  6.13829467e+01,   6.56156893e+01],
        [  1.00837126e+01,   1.77990338e+01],
        [ -3.96188628e+01,  -3.02579723e+01],
        [  1.71606376e+01,   2.76488718e+01],
        [ -3.97555306e+01,  -2.31817520e+01],
        [ -3.25049377e+01,  -9.13984579e+00],
        [  4.99521240e+00,   7.77433846e+01],
        [  7.87780437e+00,  -3.59475262e+00],
        [ -7.00674013e+01,  -5.34878660e+01],
        [  1.27302157e+01,   4.13417415e+01],
        [  2.67529419e+01,   6.61490194e+01],
        [ -3.44840727e+01,  -1.65159722e+01],
        [ -5.31016925e+01,  -5.40445723e+01],
        [  6.20580039e+01,   5.26382984e+01],
        [  3.55380855e+01,  -2.69496357e+01],
        [ -1.02068255e+00,   7.30313186e-01],
        [ -1.62509168e+01,   4.15972532e+00],
        [ -1.09794938e+02,  -9.65724027e+01],
        [ -2.74283590e+01,   3.48318182e+01],
        [ -2.33110475e+01,   6.97218478e-01],
        [ -1.02020490e+02,  -1.67333025e+02],
        [ -1.39426087e+01,  -1.09100612e+00],
        [ -2.60368372e+01,  -8.36473949e+01],
        [  9.81440937e+00,   2.92561144e+01],
        [  5.89424151e+00,   1.00023359e+02],
        [ -8.61983724e-02,   4.47903337e+01],
        [  1.87660661e+00,  -7.09117993e+00],
        [ -1.17850799e+01,  -2.91901223e+01],
        [ -5.86930244e+01,  -9.58512106e+01],
        [  2.30075386e+01,  -1.11010098e+01],
        [ -3.03350323e+01,  -1.10269632e+02],
        [ -2.78914017e+01,  -2.84443958e+01],
        [ -6.11206778e+01,  -1.27400129e+02],
        [  5.30261462e+00,   4.21395803e+01],
        [  1.11355361e+01,   3.02636514e+01],
        [ -1.84942325e+01,   5.92079650e+01],
        [  2.37351349e+01,  -4.29730519e+00],
        [  3.24190136e+00,   8.89430664e+00],
        [ -6.38447325e+01,  -1.04496155e+02],
        [ -1.20560136e+01,   3.23104485e+01],
        [ -6.24963346e+01,  -1.24244167e+02],
        [  4.19984525e+00,  -3.87090056e+01],
        [ -2.13534122e+01,  -9.14227926e+01],
        [  1.32873337e+01,  -2.59778589e+01],
        [  4.27924777e+01,   9.55570218e+01],
        [  4.50017405e+00,   5.28235897e+01],
        [  3.84957139e+01,  -1.23396643e+01],
        [  2.08096011e+01,  -3.34510316e+00],
        [ -3.23603927e+01,  -6.58802466e+01],
        [ -2.11759890e+00,  -2.61211872e+01],
        [ -5.96684490e+01,  -1.07042049e+02],
        [  2.86410098e+01,   8.63905834e+01],
        [  1.89509600e+01,   1.03480382e+02],
        [  4.62316394e+01,   3.04975726e+01],
        [  8.13685333e+00,   1.07695160e+02],
        [  2.10333794e+01,   5.09745103e+00],
        [ -8.99379690e+01,  -8.19491265e+01],
        [  3.71873034e+00,  -2.40208941e+01],
        [ -3.88326001e+01,  -4.59935959e+01],
        [  3.59776912e+00,  -1.06760541e+01],
        [  2.14373409e+01,   1.00459106e+01],
        [ -1.13276739e+02,  -1.61110999e+02],
        [ -2.94240817e+01,   3.85438299e-01],
        [ -3.02082229e+01,  -1.16478915e+01],
        [ -5.91888925e+01,  -1.14618584e+02],
        [  2.04874676e+00,   7.29056258e+01],
        [ -8.38997565e+01,  -1.46949848e+02],
        [ -2.81931712e+01,   4.75959194e+00],
        [ -2.42574566e+01,   1.98573934e+01],
        [ -3.10254229e+01,   1.00039230e+01],
        [ -8.45190335e+00,  -3.49042074e+00],
        [  2.43500235e+00,   1.47538714e+01],
        [ -4.22615291e+01,  -6.47293437e+01],
        [  1.60130488e+01,   3.98840766e+01],
        [ -1.70137881e+01,  -1.46011542e+01],
        [ -6.95329283e+01,  -1.07383528e+02],
        [  5.01063077e+00,   2.90637208e+01],
        [  1.28549056e+01,   4.93922005e+01],
        [ -4.22151043e+01,  -1.24111692e+02],
        [ -7.30595037e+00,  -1.05682393e+02],
        [  6.61752813e+01,   1.55104413e+01],
        [ -4.69710721e+01,  -1.16508404e+02],
        [ -2.92513672e+01,  -1.03086823e+02],
        [  6.79835527e+01,  -4.95196983e+01],
        [ -9.12793256e+00,   4.52375291e+01],
        [  1.86699770e+01,   4.23704359e+01],
        [  4.65315672e+00,   3.36462224e+01],
        [ -1.70527305e+00,  -4.43716477e+01],
        [ -4.09513899e+01,  -4.34374086e+01],
        [ -2.39425139e+01,  -8.99868988e+01],
        [  1.41920097e+01,   7.47563089e+01],
        [  3.28885334e+00,   6.20549683e+00],
        [ -1.62013914e+01,  -9.11653546e+01],
        [  4.33148322e+01,   1.04535799e+02],
        [  1.18563813e+01,   5.06510932e+00],
        [  3.13453758e+01,  -1.03596478e-01],
        [ -7.80898897e+00,   1.19724085e+01],
        [  1.13588975e+00,  -2.10380376e+01],
        [ -8.61649851e+00,   5.20725350e-02],
        [ -8.37792732e+01,  -1.27493762e+02],
        [ -1.40136562e+01,   5.56307170e+00],
        [  5.01643392e+01,   3.89728166e+01],
        [ -1.75799984e+01,  -9.43101474e+01],
        [ -1.97685070e+01,   1.21174929e+01],
        [ -4.99079577e+01,  -1.37843813e+02],
        [  4.59507291e+01,  -4.33159058e+00],
        [ -4.81335395e+01,  -9.71516753e+01],
        [ -7.95860423e+01,  -1.45605312e+02],
        [ -5.63073799e+01,  -1.11104781e+02],
        [ -1.14013231e+01,  -2.07468168e+01],
        [ -6.51549446e+01,  -6.02160843e+01],
        [ -3.22884230e+01,  -1.27575386e+01],
        [ -2.14840960e+01,   3.34585188e+01],
        [ -3.40604979e+01,  -5.42359221e+01],
        [  2.83988827e+01,   2.19223415e+01],
        [ -2.65791059e+01,  -8.72688840e+01],
        [ -4.58395022e+01,  -8.58653220e+01],
        [  1.29050690e+01,  -1.17264833e+01],
        [ -1.79194610e+01,  -1.81833120e+01],
        [  1.08329885e+01,   1.07297615e+02],
        [ -3.29719466e+01,  -8.35562262e+01],
        [ -7.13811586e+00,   6.65657450e+01],
        [ -3.70644598e+01,  -9.63884610e+01],
        [  1.14902184e+01,   5.11819963e+01],
        [ -7.44506687e+01,  -9.67282356e+01],
        [  2.24428771e+01,  -1.40734247e+01],
        [  3.56235567e+01,   1.24101909e+02],
        [  1.06146795e+01,  -4.82338157e+01],
        [  1.72794340e+01,  -3.72535334e+01],
        [  1.95171344e+01,   2.06207856e+00],
        [  3.45760251e+01,   7.45998084e+01],
        [ -1.29882524e+01,  -7.12422132e+00],
        [  1.83066291e+00,   3.94781729e+01],
        [ -3.60745046e+01,   1.67214689e+01],
        [  1.97720481e+01,   1.06250453e+02],
        [  2.38995668e+01,   1.15619988e+02],
        [ -7.44068376e+00,  -9.76421452e+01],
        [ -1.70107436e+01,  -4.71864433e+01],
        [ -4.33654787e+01,  -6.03405762e+01],
        [  6.29134570e+00,   2.92820162e+01],
        [ -6.67959349e+01,  -3.25384589e+01],
        [ -1.22547324e+01,   2.24985191e+00],
        [ -7.24926486e+01,  -9.83363996e+01],
        [ -1.67705798e+01,  -5.63257327e+00],
        [  5.74682317e+00,   2.56004831e+01],
        [ -2.14658437e+01,  -7.62548436e+00],
        [ -8.21480827e+00,   1.52086562e+01],
        [ -1.68582518e+01,   3.94209437e+00],
        [ -4.53258620e+01,  -6.88811944e+01],
        [  4.67147707e+01,   7.58368848e+01],
        [ -2.76875684e+01,  -4.22800933e+01],
        [  4.68635548e+00,   6.46423610e+01],
        [ -6.65319390e+01,  -5.03562371e+00],
        [ -7.52282762e+01,  -4.82734357e+01],
        [  2.77459217e+01,   2.23751331e+01],
        [ -1.78900451e+01,  -1.92289936e+01],
        [ -8.50657221e+00,  -5.54672664e+01],
        [ -1.90284131e+01,  -3.83828281e+00],
        [ -6.68680226e+01,  -8.49107343e+01],
        [  5.81123202e+01,   7.58420176e+01],
        [ -2.92480631e+01,   5.30968645e+01],
        [  5.14500923e+00,   5.97181753e+01],
        [  1.23527305e+01,   1.82361569e+01],
        [ -1.22010998e+01,   3.17718673e+01],
        [ -1.92160784e+01,   3.37933300e+01],
        [ -1.62361953e+01,  -1.13038374e+01],
        [ -1.93831045e+01,  -3.51471836e+01],
        [ -1.82374046e+01,  -1.15015381e+01],
        [ -5.99462302e+01,  -8.16171720e+01],
        [  8.70188638e+01,   9.88312397e+01],
        [ -1.35494444e+00,   5.81828540e+00],
        [  3.68754002e+01,   2.66397190e+01],
        [ -1.83167129e+01,  -7.06388290e+00],
        [ -6.43374489e+00,   5.12500565e+01],
        [ -5.81508440e+01,  -1.12278824e+02],
        [ -1.06748554e+01,  -2.54180684e+00],
        [ -8.12527644e+01,  -8.65721040e+01],
        [ -6.35012080e+00,   7.01628287e-01],
        [ -5.62022407e+01,  -6.33273583e-01],
        [ -1.36783937e+01,   5.60405924e+01],
        [ -5.24387880e+01,   1.95795813e+01],
        [ -3.47479695e+01,  -3.62846348e+01],
        [ -2.12123906e+01,  -4.09178370e+01],
        [ -6.61846626e+01,  -6.56800263e+01],
        [ -8.18225964e+01,  -4.04273892e+01],
        [ -2.69103519e+01,  -3.69885750e+01],
        [  8.95608625e+01,   4.52457367e+01],
        [  5.01260958e+01,   7.02252585e+01],
        [  1.94484652e+00,   3.84813753e+00],
        [ -4.28872361e+01,  -3.20589920e+01],
        [ -8.98564239e+01,  -8.23745469e+01],
        [  2.98895928e+00,  -6.91559878e+00],
        [ -2.77333725e+01,  -2.96273702e+01],
        [ -3.77593476e+01,   2.27121819e+01],
        [ -2.79891153e+01,  -2.05309095e+01],
        [ -3.57432734e+01,  -2.50527766e+01],
        [ -5.70882986e+01,  -3.64720080e+00],
        [ -5.46994736e+01,  -2.63330874e+01],
        [ -5.07665137e+01,  -3.39588190e+01],
        [ -2.87982268e+01,  -1.17080609e+01],
        [ -3.04189882e+01,  -1.04789375e-01],
        [ -4.45084656e+01,  -1.30849337e+02],
        [ -3.04406065e+01,  -7.81328306e+00],
        [ -9.63503569e+00,   8.99003473e+00],
        [ -7.60431946e+01,  -6.25971896e+01],
        [ -5.77468535e+01,  -1.03657968e+02],
        [ -5.09229171e+01,  -1.75123141e+00],
        [ -8.81622294e+01,  -9.91135656e+01],
        [ -8.70472247e+01,  -8.48220083e+01],
        [  7.23969500e+01,   7.14964319e+01],
        [  2.35059210e+01,   5.20683432e+01],
        [ -4.42381392e+00,   4.54559952e+01],
        [  1.02718054e+01,   7.23534434e+01],
        [  1.07252450e+02,   9.06331944e+01],
        [ -7.57130290e+00,   1.79457873e+01],
        [  1.08843815e+01,   4.55904383e+01],
        [  1.47778746e+01,   6.75029672e+01],
        [ -1.66796790e+01,   9.49962510e-01],
        [  5.50620403e+00,   3.02944433e+01],
        [  7.20168767e+00,   6.38510782e+00],
        [ -4.27170093e+01,  -1.81727727e+01],
        [ -3.98313240e+01,  -1.03686979e+01],
        [ -4.09126168e+01,  -2.66002747e+01],
        [ -5.44307995e+01,  -4.02548763e+01],
        [  8.86048329e-01,  -4.06978644e+00],
        [ -1.99943640e+01,  -1.46541117e+01],
        [ -1.76822311e+00,  -1.32123577e+01],
        [ -1.60374910e+01,   3.14149513e+01],
        [ -7.90536629e+01,  -8.13677465e+01],
        [ -6.25636662e+01,  -2.04243149e+01],
        [ -3.07229004e+01,  -6.38533461e+01],
        [  4.13415973e+00,  -4.47442583e+01],
        [  5.45096701e+01,   7.65868818e+01],
        [  5.64490611e+00,   5.15878010e+01],
        [ -7.81343451e+01,  -1.19390776e+02],
        [  9.67893980e-01,   4.96521825e-01],
        [ -7.95078824e+01,  -8.77522397e+01],
        [ -8.88050364e+00,   7.61399652e+00],
        [  1.36551847e+01,   4.49722410e+01],
        [  2.05569675e+01,  -4.96169424e-01],
        [ -8.40852418e+00,   8.34359180e+01],
        [ -2.53260780e+01,  -2.19572443e+01],
        [  6.68057229e+01,   1.29067680e+01],
        [ -5.95429103e+01,  -5.83588676e+01],
        [  6.03947767e+00,   2.23981665e+00],
        [  3.05547694e+01,   7.80232233e+01],
        [ -2.90871255e+01,  -3.28070157e+01],
        [ -1.96019663e+01,  -3.09834307e+01],
        [ -7.56966288e+01,  -9.37226632e+01],
        [  7.55566996e+00,   4.87836740e+01],
        [  7.17808733e+00,   3.14558368e+01],
        [  1.91970435e+01,   4.21492914e+01],
        [  6.28322181e+01,   9.02204533e+01],
        [  2.41713835e+01,  -6.17648856e+01],
        [  6.48185757e-02,   8.84676806e+00],
        [  6.43091465e+01,   3.16220589e+01],
        [  6.49845895e+01,   7.46283260e+01],
        [ -1.01311383e+01,  -4.02404004e+01],
        [ -3.47273942e+01,  -3.86795846e+01],
        [ -3.97845352e+01,  -5.16338892e+01],
        [ -2.04241652e+01,  -6.08776492e+00],
        [ -8.55999267e+00,  -1.47520846e+01],
        [ -4.01986956e+01,  -3.61239276e+01],
        [  6.56516557e+00,  -2.80343757e+01],
        [ -3.68203129e+01,  -3.30406179e+00],
        [ -3.37768274e+01,   7.23352435e+01],
        [  9.22294238e+01,   7.58326191e+01],
        [ -3.83840301e+01,  -5.06163863e+01],
        [ -5.02349714e+01,  -5.40857580e+01],
        [  3.41336971e+01,   4.69431523e+01],
        [ -5.59742244e+01,  -5.01394710e+01],
        [ -5.31908748e+00,   5.25630642e+00],
        [ -7.80575099e+00,   3.79530078e+01],
        [ -1.04556169e+01,   3.02720639e+01],
        [ -6.27465605e+01,  -1.04291658e+02],
        [ -2.72709256e+01,  -5.33931281e+01],
        [ -8.40066689e+01,  -1.39477435e+02],
        [  2.94920941e+01,   2.38451717e+01],
        [ -8.35476449e+01,  -1.17860252e+02],
        [  4.78892016e+01,  -6.10016960e+01],
        [ -2.33176748e+00,  -1.80794834e+01],
        [  8.44724036e+00,   7.15162661e+01],
        [ -1.00558137e+01,   2.55515640e+01],
        [ -2.82893495e+01,  -2.83655772e+01],
        [ -7.67813929e+01,  -1.09117481e+02],
        [ -3.48570217e+01,  -3.98137167e+01],
        [ -3.06506335e+01,  -4.85179886e+01],
        [  3.33286658e+01,   7.90402342e+00],
        [ -4.08781971e+01,  -8.06524680e+01],
        [  6.75910599e+01,   7.32196740e-01],
        [  4.30770356e+00,   6.71375282e+01],
        [  1.11383196e+01,   3.13151668e+01],
        [ -1.64789427e+01,   4.13270737e+01],
        [ -4.40333721e+00,  -2.43450997e+00],
        [ -7.30087922e+01,  -3.49975128e+01],
        [  4.70338583e+00,   9.70990830e+00],
        [ -6.14831728e+01,  -8.37006414e+01],
        [  2.60937085e+01,   2.42384206e+01],
        [ -3.41030987e+01,  -9.73633227e+01],
        [  5.18392864e+01,  -3.32843904e+01],
        [  3.33150907e+00,   4.07423623e+01],
        [ -3.39021336e+01,   4.30057892e+01],
        [ -7.37786723e+00,   5.85820770e+01],
        [ -8.08320564e+00,   9.99704826e+00],
        [ -9.57716833e+01,  -5.02748209e+01],
        [  1.98493432e+01,   3.43659805e+00],
        [ -8.06321677e+01,  -5.15373140e+01],
        [ -8.89422510e+00,  -5.66990103e+01],
        [ -5.96856293e+00,   2.54494038e+01],
        [ -1.47125858e+01,   3.57880640e+01],
        [ -3.63115424e+01,  -1.03219039e+02],
        [ -3.38550029e+00,  -4.69118254e+01],
        [ -6.88082782e+01,  -2.28367243e+01],
        [ -4.23159829e+01,  -1.34189218e+01],
        [ -7.61244904e+01,  -6.45903097e+01],
        [ -9.49717732e+00,  -2.10083125e+01],
        [  2.51545777e+01,   2.17442525e+01],
        [ -5.42322563e+01,  -1.01434343e+02],
        [ -1.78060336e+01,   2.31292504e+01],
        [ -2.37854214e+01,   3.16078768e+01],
        [ -9.44838801e+01,  -9.87571871e+01],
        [ -1.82232828e+01,   3.35791249e+01],
        [ -3.65191925e+01,  -6.39902052e+01],
        [ -1.80492481e+01,   5.93612473e+00],
        [ -1.72214094e+01,   1.33129351e+01],
        [  5.07161780e+01,  -2.03423271e+01],
        [  2.97304659e+01,  -2.84394705e+01],
        [ -8.26279515e+00,   4.10961450e+01],
        [ -3.56409044e+01,  -5.90879486e+01],
        [  2.71355895e+01,  -2.00927291e+01],
        [ -3.46939628e+01,  -4.62152025e+01],
        [  2.69927631e+01,  -2.27732773e+00],
        [  3.68552111e+01,  -1.76153702e+00],
        [ -8.96481127e+00,   1.06568193e+01],
        [ -7.96404323e+01,  -9.92250393e+01],
        [ -6.61439930e+01,  -5.34088378e+01],
        [ -3.39365984e+01,   2.90194480e+01],
        [ -4.53618406e+01,  -7.57534719e+01],
        [ -4.23714214e+01,  -6.17151410e+01],
        [  6.57113459e+01,  -1.41148903e+01],
        [ -2.77083818e+01,   4.58005570e+01],
        [  7.35482599e+00,   4.11110595e+01],
        [ -2.26585846e+01,   5.42164443e+01],
        [  3.70196441e+01,  -4.06798560e+01],
        [ -7.52238760e+01,  -7.87949202e+01],
        [ -7.44148416e+01,  -9.06192160e+01],
        [ -4.09447868e+01,  -7.30779333e+01],
        [ -5.48753870e+00,  -1.42526435e+01],
        [ -7.15579178e+01,  -2.64281591e+01],
        [ -2.62553494e+01,   1.79822315e+01],
        [  4.60600080e+01,  -7.65606223e+00],
        [ -5.92189812e+01,  -7.52374321e+01],
        [  1.37601144e+01,   4.49603667e+00],
        [ -3.31360542e+01,  -3.47472848e+01],
        [ -3.04873481e+01,  -2.52848500e+00],
        [ -3.42548958e+01,  -2.42141622e+01],
        [ -2.14325975e+01,   3.72191260e+01],
        [  1.60822062e+00,   4.46251463e+01],
        [ -4.90627549e+01,  -8.02949005e+01],
        [ -1.29401460e-01,   2.01844132e+01],
        [ -2.81861514e+01,  -5.95892881e+00],
        [ -8.21135427e+00,   1.12484573e+01],
        [  5.70809730e+00,  -5.93851479e+01],
        [ -2.94744183e+01,   3.62889331e+01],
        [ -3.46236374e+01,  -4.32383028e+01],
        [ -4.36520564e+01,  -7.77582520e+01],
        [ -4.69603659e+01,  -7.46796979e+01],
        [ -6.25903542e+01,  -2.74598921e+01],
        [ -7.49744295e+01,  -6.66595136e+01],
        [  1.77290619e+01,   2.01632692e+01],
        [ -3.21693498e+01,   2.53795455e+01],
        [ -5.05337477e+00,  -1.07238108e+01],
        [  6.96548703e+01,  -2.10307924e+01],
        [ -5.29945555e+01,  -6.00678736e+01],
        [ -6.19364252e+01,  -6.06278698e+01],
        [  5.01120807e+01,  -2.73801478e-01],
        [ -1.37761998e+01,  -3.86256931e+01],
        [  2.35729462e+01,   2.52171607e+00],
        [ -2.41767160e+01,  -8.66087384e+01],
        [ -1.15151537e+01,   5.28877582e+01],
        [ -6.06707943e+01,   2.76723225e-01],
        [  3.60641426e+00,   7.54529218e+01],
        [ -6.55384683e+01,  -9.06634358e+01],
        [ -2.07628477e+01,   3.98144772e+01],
        [ -3.88858674e+01,   1.30983966e+01],
        [ -2.43383945e+01,  -5.80040245e+01],
        [  3.59298559e+01,  -3.68331211e+01],
        [ -1.34045974e+01,   3.89178550e+01],
        [ -2.88383257e+00,   1.58036871e+01]]),
 array([[ -3.18056146e+01,  -2.97813485e+01],
        [ -3.63458015e+01,   8.30585643e+00],
        [ -2.09108800e+01,  -2.33695473e+01],
        [ -4.58936445e+01,  -7.14065100e+01],
        [  2.01026705e+01,  -4.02875781e+01],
        [ -4.31356612e+01,  -8.04194320e+01],
        [  1.45908831e+01,   5.25960781e+01],
        [ -3.43060970e+01,  -1.65129691e+01],
        [ -2.71594422e+01,  -5.58981872e+01],
        [ -1.06302716e+01,  -9.71334128e+00],
        [ -1.34055907e+01,   4.06932982e+00],
        [ -6.48772248e+01,  -9.99818923e+01],
        [  6.17220900e+01,   3.88076286e+01],
        [ -7.87137261e+01,  -1.23885710e+02],
        [  1.79000414e+00,  -1.09516498e+01],
        [  3.70752976e+01,   7.07269605e+01],
        [ -4.62478912e+01,   1.42070942e+01],
        [  7.01626969e+00,  -5.90680303e+00],
        [ -2.03178979e+01,  -6.78746281e+00],
        [ -3.81935518e+01,  -6.23071134e+01],
        [  3.47657549e+00,   6.10867647e+00],
        [ -7.24484063e+01,  -9.12444381e+01],
        [  1.69865679e+01,   1.29779619e+01],
        [ -3.42893822e+01,  -9.60668678e+01],
        [  5.31382918e-01,  -5.40893495e+01],
        [  3.14872836e+01,   9.24077579e+01],
        [ -3.30649479e+00,   4.82906575e+01],
        [ -6.19176118e+01,  -3.51729418e+01],
        [  1.96264440e+01,   4.63540026e+00],
        [ -3.51823680e+01,  -4.77689276e+01],
        [  4.06663131e+00,  -3.81619526e+01],
        [ -5.80755850e+01,  -6.70327609e+01],
        [  2.30214723e+01,   1.39103088e+01],
        [  2.12692568e+01,   3.40720986e+01],
        [ -2.59019724e+01,   2.31307218e+01],
        [  4.26235349e+01,   6.96782067e+01],
        [  2.09538425e+01,   1.96999464e+01],
        [ -1.15460054e+01,  -2.95797110e+01],
        [ -3.66425907e+01,   4.19972394e+00],
        [ -7.08280318e+01,  -9.00701096e+01],
        [ -1.70225664e+01,  -4.62291557e+01],
        [  4.27509036e+01,   3.60875222e+01],
        [ -1.29475125e+01,  -6.55334920e+01],
        [ -1.33696926e+01,   2.61025288e+01],
        [ -1.85574167e+01,  -7.93571344e+00],
        [ -7.76461669e+01,  -9.78920435e+01],
        [  2.96026102e+01,   6.53760729e+01],
        [ -2.26232641e+01,  -6.32096356e+01],
        [ -2.28425322e+01,   3.38167625e+01],
        [ -4.63267096e+01,   8.87424143e-01],
        [ -3.99389896e+01,  -1.28779067e+01],
        [ -2.84496198e+01,  -4.01117305e+01],
        [ -2.88998525e+01,  -2.69647059e+00],
        [ -6.59461988e+00,  -1.84794298e+01],
        [ -2.31106818e+01,  -3.54517110e+01],
        [ -1.93601002e+01,  -1.32482279e+01],
        [ -3.53706430e+01,  -6.83001855e+01],
        [ -2.27184037e+01,  -3.40336602e+01],
        [  1.66592523e+01,   5.37210183e+01],
        [ -3.93270993e+01,  -9.70180290e+01],
        [ -7.51101639e+01,  -1.35175447e+02],
        [  2.18201340e+01,  -2.52664297e+01],
        [ -6.67274216e+01,  -1.25149569e+02],
        [ -4.12820724e+01,  -9.66679258e+01],
        [  1.39266037e+01,  -1.54018934e+01],
        [  8.88474950e-01,   6.37597391e+01],
        [  2.10208470e+01,   6.47563063e+01],
        [  7.07707629e+01,   3.65370439e+01],
        [  3.63315648e+01,   8.00405302e+01],
        [ -1.10753452e+01,   2.64828941e+01],
        [ -2.31774694e+01,  -2.96284612e+01],
        [  3.00009398e+01,   4.11152875e+01],
        [  5.54529527e+00,  -1.45040123e+01],
        [ -3.54770693e+01,  -8.18263667e+01],
        [  4.34214656e+00,   2.96187062e+01],
        [ -8.11220961e+00,  -7.39890174e+01],
        [  2.65747575e+01,   5.81081804e+01],
        [ -4.79076881e+01,  -1.12323154e+02],
        [ -1.26073619e+01,  -2.48344126e+01],
        [ -2.76160375e+01,  -1.39669644e+00],
        [ -4.92698149e+01,  -5.78872163e+01],
        [ -4.76197101e+00,   1.43730729e+01],
        [  9.96552552e+00,   5.64332798e+01],
        [ -1.43734045e+01,  -9.27335685e+01],
        [ -3.81166799e+00,   1.02153448e+01],
        [ -1.70817771e+01,  -9.26831397e+00],
        [ -2.52036884e+01,  -5.21023268e+01],
        [  4.17507834e+01,   8.08653506e+01],
        [  1.22180282e+00,   6.29861066e+01],
        [ -4.40185286e+01,  -1.22236333e+02],
        [ -1.48180921e+01,  -4.88339826e+01],
        [ -1.37808807e+01,  -1.02513869e+02],
        [ -5.48923185e+01,  -1.27561963e+02],
        [ -1.47456267e+01,   2.40516555e+01],
        [ -1.73808922e+00,  -1.06630718e+01],
        [ -8.12048473e+00,   4.26860416e+01],
        [ -1.89925948e+00,   1.08394697e+01],
        [  1.75460489e+01,  -3.87903219e+00],
        [ -4.86536438e+01,  -1.27168722e+02],
        [  3.13161399e+01,   8.39852173e+01],
        [  3.80991138e+01,  -2.87304312e+01],
        [ -1.20617078e+01,  -2.33461967e+01],
        [  2.02390185e+01,   6.78786908e+01],
        [ -3.90323787e+01,  -3.50137676e+01],
        [  3.17515708e+01,   8.57346677e+01],
        [ -4.85334577e+01,  -7.11278444e+01],
        [ -9.59398068e+00,   2.92564622e+01],
        [ -3.86557710e+01,  -9.82756666e+01],
        [  1.64717830e+01,   2.60985133e+00],
        [  3.52010365e+00,   5.43377497e+01],
        [  2.23486350e+01,   6.49388479e+01],
        [  6.13829467e+01,   6.56156893e+01],
        [  1.00837126e+01,   1.77990338e+01],
        [ -3.96188628e+01,  -3.02579723e+01],
        [  1.71606376e+01,   2.76488718e+01],
        [ -3.97555306e+01,  -2.31817520e+01],
        [ -3.25049377e+01,  -9.13984579e+00],
        [  4.99521240e+00,   7.77433846e+01],
        [  7.87780437e+00,  -3.59475262e+00],
        [ -7.00674013e+01,  -5.34878660e+01],
        [  1.27302157e+01,   4.13417415e+01],
        [  2.67529419e+01,   6.61490194e+01],
        [ -3.44840727e+01,  -1.65159722e+01],
        [ -5.31016925e+01,  -5.40445723e+01],
        [  6.20580039e+01,   5.26382984e+01],
        [  3.55380855e+01,  -2.69496357e+01],
        [ -1.02068255e+00,   7.30313186e-01],
        [ -1.62509168e+01,   4.15972532e+00],
        [ -1.09794938e+02,  -9.65724027e+01],
        [ -2.74283590e+01,   3.48318182e+01],
        [ -2.33110475e+01,   6.97218478e-01],
        [ -1.02020490e+02,  -1.67333025e+02],
        [ -1.39426087e+01,  -1.09100612e+00],
        [ -2.60368372e+01,  -8.36473949e+01],
        [  9.81440937e+00,   2.92561144e+01],
        [  5.89424151e+00,   1.00023359e+02],
        [ -8.61983724e-02,   4.47903337e+01],
        [  1.87660661e+00,  -7.09117993e+00],
        [ -1.17850799e+01,  -2.91901223e+01],
        [ -5.86930244e+01,  -9.58512106e+01],
        [  2.30075386e+01,  -1.11010098e+01],
        [ -3.03350323e+01,  -1.10269632e+02],
        [ -2.78914017e+01,  -2.84443958e+01],
        [ -6.11206778e+01,  -1.27400129e+02],
        [  5.30261462e+00,   4.21395803e+01],
        [  1.11355361e+01,   3.02636514e+01],
        [ -1.84942325e+01,   5.92079650e+01],
        [  2.37351349e+01,  -4.29730519e+00],
        [  3.24190136e+00,   8.89430664e+00],
        [ -6.38447325e+01,  -1.04496155e+02],
        [ -1.20560136e+01,   3.23104485e+01],
        [ -6.24963346e+01,  -1.24244167e+02],
        [  4.19984525e+00,  -3.87090056e+01],
        [ -2.13534122e+01,  -9.14227926e+01],
        [  1.32873337e+01,  -2.59778589e+01],
        [  4.27924777e+01,   9.55570218e+01],
        [  4.50017405e+00,   5.28235897e+01],
        [  3.84957139e+01,  -1.23396643e+01],
        [  2.08096011e+01,  -3.34510316e+00],
        [ -3.23603927e+01,  -6.58802466e+01],
        [ -2.11759890e+00,  -2.61211872e+01],
        [ -5.96684490e+01,  -1.07042049e+02],
        [  2.86410098e+01,   8.63905834e+01],
        [  1.89509600e+01,   1.03480382e+02],
        [  4.62316394e+01,   3.04975726e+01],
        [  8.13685333e+00,   1.07695160e+02],
        [  2.10333794e+01,   5.09745103e+00],
        [ -8.99379690e+01,  -8.19491265e+01],
        [  3.71873034e+00,  -2.40208941e+01],
        [ -3.88326001e+01,  -4.59935959e+01],
        [  3.59776912e+00,  -1.06760541e+01],
        [  2.14373409e+01,   1.00459106e+01],
        [ -1.13276739e+02,  -1.61110999e+02],
        [ -2.94240817e+01,   3.85438299e-01],
        [ -3.02082229e+01,  -1.16478915e+01],
        [ -5.91888925e+01,  -1.14618584e+02],
        [  2.04874676e+00,   7.29056258e+01],
        [ -8.38997565e+01,  -1.46949848e+02],
        [ -2.81931712e+01,   4.75959194e+00],
        [ -2.42574566e+01,   1.98573934e+01],
        [ -3.10254229e+01,   1.00039230e+01],
        [ -8.45190335e+00,  -3.49042074e+00],
        [  2.43500235e+00,   1.47538714e+01],
        [ -4.22615291e+01,  -6.47293437e+01],
        [  1.60130488e+01,   3.98840766e+01],
        [ -1.70137881e+01,  -1.46011542e+01],
        [ -6.95329283e+01,  -1.07383528e+02],
        [  5.01063077e+00,   2.90637208e+01],
        [  1.28549056e+01,   4.93922005e+01],
        [ -4.22151043e+01,  -1.24111692e+02],
        [ -7.30595037e+00,  -1.05682393e+02],
        [  6.61752813e+01,   1.55104413e+01],
        [ -4.69710721e+01,  -1.16508404e+02],
        [ -2.92513672e+01,  -1.03086823e+02],
        [  6.79835527e+01,  -4.95196983e+01],
        [ -9.12793256e+00,   4.52375291e+01],
        [  1.86699770e+01,   4.23704359e+01],
        [  4.65315672e+00,   3.36462224e+01],
        [ -1.70527305e+00,  -4.43716477e+01],
        [ -4.09513899e+01,  -4.34374086e+01],
        [ -2.39425139e+01,  -8.99868988e+01],
        [  1.41920097e+01,   7.47563089e+01],
        [  3.28885334e+00,   6.20549683e+00],
        [ -1.62013914e+01,  -9.11653546e+01],
        [  4.33148322e+01,   1.04535799e+02],
        [  1.18563813e+01,   5.06510932e+00],
        [  3.13453758e+01,  -1.03596478e-01],
        [ -7.80898897e+00,   1.19724085e+01],
        [  1.13588975e+00,  -2.10380376e+01],
        [ -8.61649851e+00,   5.20725350e-02],
        [ -8.37792732e+01,  -1.27493762e+02],
        [ -1.40136562e+01,   5.56307170e+00],
        [  5.01643392e+01,   3.89728166e+01],
        [ -1.75799984e+01,  -9.43101474e+01],
        [ -1.97685070e+01,   1.21174929e+01],
        [ -4.99079577e+01,  -1.37843813e+02],
        [  4.59507291e+01,  -4.33159058e+00],
        [ -4.81335395e+01,  -9.71516753e+01],
        [ -7.95860423e+01,  -1.45605312e+02],
        [ -5.63073799e+01,  -1.11104781e+02],
        [ -1.14013231e+01,  -2.07468168e+01],
        [ -6.51549446e+01,  -6.02160843e+01],
        [ -3.22884230e+01,  -1.27575386e+01],
        [ -2.14840960e+01,   3.34585188e+01],
        [ -3.40604979e+01,  -5.42359221e+01],
        [  2.83988827e+01,   2.19223415e+01],
        [ -2.65791059e+01,  -8.72688840e+01],
        [ -4.58395022e+01,  -8.58653220e+01],
        [  1.29050690e+01,  -1.17264833e+01],
        [ -1.79194610e+01,  -1.81833120e+01],
        [  1.08329885e+01,   1.07297615e+02],
        [ -3.29719466e+01,  -8.35562262e+01],
        [ -7.13811586e+00,   6.65657450e+01],
        [ -3.70644598e+01,  -9.63884610e+01],
        [  1.14902184e+01,   5.11819963e+01],
        [ -7.44506687e+01,  -9.67282356e+01],
        [  2.24428771e+01,  -1.40734247e+01],
        [  3.56235567e+01,   1.24101909e+02],
        [  1.06146795e+01,  -4.82338157e+01],
        [  1.72794340e+01,  -3.72535334e+01],
        [  1.95171344e+01,   2.06207856e+00],
        [  3.45760251e+01,   7.45998084e+01],
        [ -1.29882524e+01,  -7.12422132e+00],
        [  1.83066291e+00,   3.94781729e+01],
        [ -3.60745046e+01,   1.67214689e+01],
        [  1.97720481e+01,   1.06250453e+02],
        [  2.38995668e+01,   1.15619988e+02],
        [ -7.44068376e+00,  -9.76421452e+01],
        [ -1.70107436e+01,  -4.71864433e+01],
        [ -4.33654787e+01,  -6.03405762e+01],
        [  6.29134570e+00,   2.92820162e+01],
        [ -6.67959349e+01,  -3.25384589e+01],
        [ -1.22547324e+01,   2.24985191e+00],
        [ -7.24926486e+01,  -9.83363996e+01],
        [ -1.67705798e+01,  -5.63257327e+00],
        [  5.74682317e+00,   2.56004831e+01],
        [ -2.14658437e+01,  -7.62548436e+00],
        [ -8.21480827e+00,   1.52086562e+01],
        [ -1.68582518e+01,   3.94209437e+00],
        [ -4.53258620e+01,  -6.88811944e+01],
        [  4.67147707e+01,   7.58368848e+01],
        [ -2.76875684e+01,  -4.22800933e+01],
        [  4.68635548e+00,   6.46423610e+01],
        [ -6.65319390e+01,  -5.03562371e+00],
        [ -7.52282762e+01,  -4.82734357e+01],
        [  2.77459217e+01,   2.23751331e+01],
        [ -1.78900451e+01,  -1.92289936e+01],
        [ -8.50657221e+00,  -5.54672664e+01],
        [ -1.90284131e+01,  -3.83828281e+00],
        [ -6.68680226e+01,  -8.49107343e+01],
        [  5.81123202e+01,   7.58420176e+01],
        [ -2.92480631e+01,   5.30968645e+01],
        [  5.14500923e+00,   5.97181753e+01],
        [  1.23527305e+01,   1.82361569e+01],
        [ -1.22010998e+01,   3.17718673e+01],
        [ -1.92160784e+01,   3.37933300e+01],
        [ -1.62361953e+01,  -1.13038374e+01],
        [ -1.93831045e+01,  -3.51471836e+01],
        [ -1.82374046e+01,  -1.15015381e+01],
        [ -5.99462302e+01,  -8.16171720e+01],
        [  8.70188638e+01,   9.88312397e+01],
        [ -1.35494444e+00,   5.81828540e+00],
        [  3.68754002e+01,   2.66397190e+01],
        [ -1.83167129e+01,  -7.06388290e+00],
        [ -6.43374489e+00,   5.12500565e+01],
        [ -5.81508440e+01,  -1.12278824e+02],
        [ -1.06748554e+01,  -2.54180684e+00],
        [ -8.12527644e+01,  -8.65721040e+01],
        [ -6.35012080e+00,   7.01628287e-01],
        [ -5.62022407e+01,  -6.33273583e-01],
        [ -1.36783937e+01,   5.60405924e+01],
        [ -5.24387880e+01,   1.95795813e+01],
        [ -3.47479695e+01,  -3.62846348e+01],
        [ -2.12123906e+01,  -4.09178370e+01],
        [ -6.61846626e+01,  -6.56800263e+01],
        [ -8.18225964e+01,  -4.04273892e+01],
        [ -2.69103519e+01,  -3.69885750e+01],
        [  8.95608625e+01,   4.52457367e+01],
        [  5.01260958e+01,   7.02252585e+01],
        [  1.94484652e+00,   3.84813753e+00],
        [ -4.28872361e+01,  -3.20589920e+01],
        [ -8.98564239e+01,  -8.23745469e+01],
        [  2.98895928e+00,  -6.91559878e+00],
        [ -2.77333725e+01,  -2.96273702e+01],
        [ -3.77593476e+01,   2.27121819e+01],
        [ -2.79891153e+01,  -2.05309095e+01],
        [ -3.57432734e+01,  -2.50527766e+01],
        [ -5.70882986e+01,  -3.64720080e+00],
        [ -5.46994736e+01,  -2.63330874e+01],
        [ -5.07665137e+01,  -3.39588190e+01],
        [ -2.87982268e+01,  -1.17080609e+01],
        [ -3.04189882e+01,  -1.04789375e-01],
        [ -4.45084656e+01,  -1.30849337e+02],
        [ -3.04406065e+01,  -7.81328306e+00],
        [ -9.63503569e+00,   8.99003473e+00],
        [ -7.60431946e+01,  -6.25971896e+01],
        [ -5.77468535e+01,  -1.03657968e+02],
        [ -5.09229171e+01,  -1.75123141e+00],
        [ -8.81622294e+01,  -9.91135656e+01],
        [ -8.70472247e+01,  -8.48220083e+01],
        [  7.23969500e+01,   7.14964319e+01],
        [  2.35059210e+01,   5.20683432e+01],
        [ -4.42381392e+00,   4.54559952e+01],
        [  1.02718054e+01,   7.23534434e+01],
        [  1.07252450e+02,   9.06331944e+01],
        [ -7.57130290e+00,   1.79457873e+01],
        [  1.08843815e+01,   4.55904383e+01],
        [  1.47778746e+01,   6.75029672e+01],
        [ -1.66796790e+01,   9.49962510e-01],
        [  5.50620403e+00,   3.02944433e+01],
        [  7.20168767e+00,   6.38510782e+00],
        [ -4.27170093e+01,  -1.81727727e+01],
        [ -3.98313240e+01,  -1.03686979e+01],
        [ -4.09126168e+01,  -2.66002747e+01],
        [ -5.44307995e+01,  -4.02548763e+01],
        [  8.86048329e-01,  -4.06978644e+00],
        [ -1.99943640e+01,  -1.46541117e+01],
        [ -1.76822311e+00,  -1.32123577e+01],
        [ -1.60374910e+01,   3.14149513e+01],
        [ -7.90536629e+01,  -8.13677465e+01],
        [ -6.25636662e+01,  -2.04243149e+01],
        [ -3.07229004e+01,  -6.38533461e+01],
        [  4.13415973e+00,  -4.47442583e+01],
        [  5.45096701e+01,   7.65868818e+01],
        [  5.64490611e+00,   5.15878010e+01],
        [ -7.81343451e+01,  -1.19390776e+02],
        [  9.67893980e-01,   4.96521825e-01],
        [ -7.95078824e+01,  -8.77522397e+01],
        [ -8.88050364e+00,   7.61399652e+00],
        [  1.36551847e+01,   4.49722410e+01],
        [  2.05569675e+01,  -4.96169424e-01],
        [ -8.40852418e+00,   8.34359180e+01],
        [ -2.53260780e+01,  -2.19572443e+01],
        [  6.68057229e+01,   1.29067680e+01],
        [ -5.95429103e+01,  -5.83588676e+01],
        [  6.03947767e+00,   2.23981665e+00],
        [  3.05547694e+01,   7.80232233e+01],
        [ -2.90871255e+01,  -3.28070157e+01],
        [ -1.96019663e+01,  -3.09834307e+01],
        [ -7.56966288e+01,  -9.37226632e+01],
        [  7.55566996e+00,   4.87836740e+01],
        [  7.17808733e+00,   3.14558368e+01],
        [  1.91970435e+01,   4.21492914e+01],
        [  6.28322181e+01,   9.02204533e+01],
        [  2.41713835e+01,  -6.17648856e+01],
        [  6.48185757e-02,   8.84676806e+00],
        [  6.43091465e+01,   3.16220589e+01],
        [  6.49845895e+01,   7.46283260e+01],
        [ -1.01311383e+01,  -4.02404004e+01],
        [ -3.47273942e+01,  -3.86795846e+01],
        [ -3.97845352e+01,  -5.16338892e+01],
        [ -2.04241652e+01,  -6.08776492e+00],
        [ -8.55999267e+00,  -1.47520846e+01],
        [ -4.01986956e+01,  -3.61239276e+01],
        [  6.56516557e+00,  -2.80343757e+01],
        [ -3.68203129e+01,  -3.30406179e+00],
        [ -3.37768274e+01,   7.23352435e+01],
        [  9.22294238e+01,   7.58326191e+01],
        [ -3.83840301e+01,  -5.06163863e+01],
        [ -5.02349714e+01,  -5.40857580e+01],
        [  3.41336971e+01,   4.69431523e+01],
        [ -5.59742244e+01,  -5.01394710e+01],
        [ -5.31908748e+00,   5.25630642e+00],
        [ -7.80575099e+00,   3.79530078e+01],
        [ -1.04556169e+01,   3.02720639e+01],
        [ -6.27465605e+01,  -1.04291658e+02],
        [ -2.72709256e+01,  -5.33931281e+01],
        [ -8.40066689e+01,  -1.39477435e+02],
        [  2.94920941e+01,   2.38451717e+01],
        [ -8.35476449e+01,  -1.17860252e+02],
        [  4.78892016e+01,  -6.10016960e+01],
        [ -2.33176748e+00,  -1.80794834e+01],
        [  8.44724036e+00,   7.15162661e+01],
        [ -1.00558137e+01,   2.55515640e+01],
        [ -2.82893495e+01,  -2.83655772e+01],
        [ -7.67813929e+01,  -1.09117481e+02],
        [ -3.48570217e+01,  -3.98137167e+01],
        [ -3.06506335e+01,  -4.85179886e+01],
        [  3.33286658e+01,   7.90402342e+00],
        [ -4.08781971e+01,  -8.06524680e+01],
        [  6.75910599e+01,   7.32196740e-01],
        [  4.30770356e+00,   6.71375282e+01],
        [  1.11383196e+01,   3.13151668e+01],
        [ -1.64789427e+01,   4.13270737e+01],
        [ -4.40333721e+00,  -2.43450997e+00],
        [ -7.30087922e+01,  -3.49975128e+01],
        [  4.70338583e+00,   9.70990830e+00],
        [ -6.14831728e+01,  -8.37006414e+01],
        [  2.60937085e+01,   2.42384206e+01],
        [ -3.41030987e+01,  -9.73633227e+01],
        [  5.18392864e+01,  -3.32843904e+01],
        [  3.33150907e+00,   4.07423623e+01],
        [ -3.39021336e+01,   4.30057892e+01],
        [ -7.37786723e+00,   5.85820770e+01],
        [ -8.08320564e+00,   9.99704826e+00],
        [ -9.57716833e+01,  -5.02748209e+01],
        [  1.98493432e+01,   3.43659805e+00],
        [ -8.06321677e+01,  -5.15373140e+01],
        [ -8.89422510e+00,  -5.66990103e+01],
        [ -5.96856293e+00,   2.54494038e+01],
        [ -1.47125858e+01,   3.57880640e+01],
        [ -3.63115424e+01,  -1.03219039e+02],
        [ -3.38550029e+00,  -4.69118254e+01],
        [ -6.88082782e+01,  -2.28367243e+01],
        [ -4.23159829e+01,  -1.34189218e+01],
        [ -7.61244904e+01,  -6.45903097e+01],
        [ -9.49717732e+00,  -2.10083125e+01],
        [  2.51545777e+01,   2.17442525e+01],
        [ -5.42322563e+01,  -1.01434343e+02],
        [ -1.78060336e+01,   2.31292504e+01],
        [ -2.37854214e+01,   3.16078768e+01],
        [ -9.44838801e+01,  -9.87571871e+01],
        [ -1.82232828e+01,   3.35791249e+01],
        [ -3.65191925e+01,  -6.39902052e+01],
        [ -1.80492481e+01,   5.93612473e+00],
        [ -1.72214094e+01,   1.33129351e+01],
        [  5.07161780e+01,  -2.03423271e+01],
        [  2.97304659e+01,  -2.84394705e+01],
        [ -8.26279515e+00,   4.10961450e+01],
        [ -3.56409044e+01,  -5.90879486e+01],
        [  2.71355895e+01,  -2.00927291e+01],
        [ -3.46939628e+01,  -4.62152025e+01],
        [  2.69927631e+01,  -2.27732773e+00],
        [  3.68552111e+01,  -1.76153702e+00],
        [ -8.96481127e+00,   1.06568193e+01],
        [ -7.96404323e+01,  -9.92250393e+01],
        [ -6.61439930e+01,  -5.34088378e+01],
        [ -3.39365984e+01,   2.90194480e+01],
        [ -4.53618406e+01,  -7.57534719e+01],
        [ -4.23714214e+01,  -6.17151410e+01],
        [  6.57113459e+01,  -1.41148903e+01],
        [ -2.77083818e+01,   4.58005570e+01],
        [  7.35482599e+00,   4.11110595e+01],
        [ -2.26585846e+01,   5.42164443e+01],
        [  3.70196441e+01,  -4.06798560e+01],
        [ -7.52238760e+01,  -7.87949202e+01],
        [ -7.44148416e+01,  -9.06192160e+01],
        [ -4.09447868e+01,  -7.30779333e+01],
        [ -5.48753870e+00,  -1.42526435e+01],
        [ -7.15579178e+01,  -2.64281591e+01],
        [ -2.62553494e+01,   1.79822315e+01],
        [  4.60600080e+01,  -7.65606223e+00],
        [ -5.92189812e+01,  -7.52374321e+01],
        [  1.37601144e+01,   4.49603667e+00],
        [ -3.31360542e+01,  -3.47472848e+01],
        [ -3.04873481e+01,  -2.52848500e+00],
        [ -3.42548958e+01,  -2.42141622e+01],
        [ -2.14325975e+01,   3.72191260e+01],
        [  1.60822062e+00,   4.46251463e+01],
        [ -4.90627549e+01,  -8.02949005e+01],
        [ -1.29401460e-01,   2.01844132e+01],
        [ -2.81861514e+01,  -5.95892881e+00],
        [ -8.21135427e+00,   1.12484573e+01],
        [  5.70809730e+00,  -5.93851479e+01],
        [ -2.94744183e+01,   3.62889331e+01],
        [ -3.46236374e+01,  -4.32383028e+01],
        [ -4.36520564e+01,  -7.77582520e+01],
        [ -4.69603659e+01,  -7.46796979e+01],
        [ -6.25903542e+01,  -2.74598921e+01],
        [ -7.49744295e+01,  -6.66595136e+01],
        [  1.77290619e+01,   2.01632692e+01],
        [ -3.21693498e+01,   2.53795455e+01],
        [ -5.05337477e+00,  -1.07238108e+01],
        [  6.96548703e+01,  -2.10307924e+01],
        [ -5.29945555e+01,  -6.00678736e+01],
        [ -6.19364252e+01,  -6.06278698e+01],
        [  5.01120807e+01,  -2.73801478e-01],
        [ -1.37761998e+01,  -3.86256931e+01],
        [  2.35729462e+01,   2.52171607e+00],
        [ -2.41767160e+01,  -8.66087384e+01],
        [ -1.15151537e+01,   5.28877582e+01],
        [ -6.06707943e+01,   2.76723225e-01],
        [  3.60641426e+00,   7.54529218e+01],
        [ -6.55384683e+01,  -9.06634358e+01],
        [ -2.07628477e+01,   3.98144772e+01],
        [ -3.88858674e+01,   1.30983966e+01],
        [ -2.43383945e+01,  -5.80040245e+01],
        [  3.59298559e+01,  -3.68331211e+01],
        [ -1.34045974e+01,   3.89178550e+01],
        [ -2.88383257e+00,   1.58036871e+01]]))

In [48]:
X_ = X.dot(A.T)
X_.shape


Out[48]:
(500, 2)

In [49]:
(A.T).shape


Out[49]:
(64, 2)

In [50]:
X.dot(A.T)


Out[50]:
array([[ -3.18056146e+01,  -2.97813485e+01],
       [ -3.63458015e+01,   8.30585643e+00],
       [ -2.09108800e+01,  -2.33695473e+01],
       [ -4.58936445e+01,  -7.14065100e+01],
       [  2.01026705e+01,  -4.02875781e+01],
       [ -4.31356612e+01,  -8.04194320e+01],
       [  1.45908831e+01,   5.25960781e+01],
       [ -3.43060970e+01,  -1.65129691e+01],
       [ -2.71594422e+01,  -5.58981872e+01],
       [ -1.06302716e+01,  -9.71334128e+00],
       [ -1.34055907e+01,   4.06932982e+00],
       [ -6.48772248e+01,  -9.99818923e+01],
       [  6.17220900e+01,   3.88076286e+01],
       [ -7.87137261e+01,  -1.23885710e+02],
       [  1.79000414e+00,  -1.09516498e+01],
       [  3.70752976e+01,   7.07269605e+01],
       [ -4.62478912e+01,   1.42070942e+01],
       [  7.01626969e+00,  -5.90680303e+00],
       [ -2.03178979e+01,  -6.78746281e+00],
       [ -3.81935518e+01,  -6.23071134e+01],
       [  3.47657549e+00,   6.10867647e+00],
       [ -7.24484063e+01,  -9.12444381e+01],
       [  1.69865679e+01,   1.29779619e+01],
       [ -3.42893822e+01,  -9.60668678e+01],
       [  5.31382918e-01,  -5.40893495e+01],
       [  3.14872836e+01,   9.24077579e+01],
       [ -3.30649479e+00,   4.82906575e+01],
       [ -6.19176118e+01,  -3.51729418e+01],
       [  1.96264440e+01,   4.63540026e+00],
       [ -3.51823680e+01,  -4.77689276e+01],
       [  4.06663131e+00,  -3.81619526e+01],
       [ -5.80755850e+01,  -6.70327609e+01],
       [  2.30214723e+01,   1.39103088e+01],
       [  2.12692568e+01,   3.40720986e+01],
       [ -2.59019724e+01,   2.31307218e+01],
       [  4.26235349e+01,   6.96782067e+01],
       [  2.09538425e+01,   1.96999464e+01],
       [ -1.15460054e+01,  -2.95797110e+01],
       [ -3.66425907e+01,   4.19972394e+00],
       [ -7.08280318e+01,  -9.00701096e+01],
       [ -1.70225664e+01,  -4.62291557e+01],
       [  4.27509036e+01,   3.60875222e+01],
       [ -1.29475125e+01,  -6.55334920e+01],
       [ -1.33696926e+01,   2.61025288e+01],
       [ -1.85574167e+01,  -7.93571344e+00],
       [ -7.76461669e+01,  -9.78920435e+01],
       [  2.96026102e+01,   6.53760729e+01],
       [ -2.26232641e+01,  -6.32096356e+01],
       [ -2.28425322e+01,   3.38167625e+01],
       [ -4.63267096e+01,   8.87424143e-01],
       [ -3.99389896e+01,  -1.28779067e+01],
       [ -2.84496198e+01,  -4.01117305e+01],
       [ -2.88998525e+01,  -2.69647059e+00],
       [ -6.59461988e+00,  -1.84794298e+01],
       [ -2.31106818e+01,  -3.54517110e+01],
       [ -1.93601002e+01,  -1.32482279e+01],
       [ -3.53706430e+01,  -6.83001855e+01],
       [ -2.27184037e+01,  -3.40336602e+01],
       [  1.66592523e+01,   5.37210183e+01],
       [ -3.93270993e+01,  -9.70180290e+01],
       [ -7.51101639e+01,  -1.35175447e+02],
       [  2.18201340e+01,  -2.52664297e+01],
       [ -6.67274216e+01,  -1.25149569e+02],
       [ -4.12820724e+01,  -9.66679258e+01],
       [  1.39266037e+01,  -1.54018934e+01],
       [  8.88474950e-01,   6.37597391e+01],
       [  2.10208470e+01,   6.47563063e+01],
       [  7.07707629e+01,   3.65370439e+01],
       [  3.63315648e+01,   8.00405302e+01],
       [ -1.10753452e+01,   2.64828941e+01],
       [ -2.31774694e+01,  -2.96284612e+01],
       [  3.00009398e+01,   4.11152875e+01],
       [  5.54529527e+00,  -1.45040123e+01],
       [ -3.54770693e+01,  -8.18263667e+01],
       [  4.34214656e+00,   2.96187062e+01],
       [ -8.11220961e+00,  -7.39890174e+01],
       [  2.65747575e+01,   5.81081804e+01],
       [ -4.79076881e+01,  -1.12323154e+02],
       [ -1.26073619e+01,  -2.48344126e+01],
       [ -2.76160375e+01,  -1.39669644e+00],
       [ -4.92698149e+01,  -5.78872163e+01],
       [ -4.76197101e+00,   1.43730729e+01],
       [  9.96552552e+00,   5.64332798e+01],
       [ -1.43734045e+01,  -9.27335685e+01],
       [ -3.81166799e+00,   1.02153448e+01],
       [ -1.70817771e+01,  -9.26831397e+00],
       [ -2.52036884e+01,  -5.21023268e+01],
       [  4.17507834e+01,   8.08653506e+01],
       [  1.22180282e+00,   6.29861066e+01],
       [ -4.40185286e+01,  -1.22236333e+02],
       [ -1.48180921e+01,  -4.88339826e+01],
       [ -1.37808807e+01,  -1.02513869e+02],
       [ -5.48923185e+01,  -1.27561963e+02],
       [ -1.47456267e+01,   2.40516555e+01],
       [ -1.73808922e+00,  -1.06630718e+01],
       [ -8.12048473e+00,   4.26860416e+01],
       [ -1.89925948e+00,   1.08394697e+01],
       [  1.75460489e+01,  -3.87903219e+00],
       [ -4.86536438e+01,  -1.27168722e+02],
       [  3.13161399e+01,   8.39852173e+01],
       [  3.80991138e+01,  -2.87304312e+01],
       [ -1.20617078e+01,  -2.33461967e+01],
       [  2.02390185e+01,   6.78786908e+01],
       [ -3.90323787e+01,  -3.50137676e+01],
       [  3.17515708e+01,   8.57346677e+01],
       [ -4.85334577e+01,  -7.11278444e+01],
       [ -9.59398068e+00,   2.92564622e+01],
       [ -3.86557710e+01,  -9.82756666e+01],
       [  1.64717830e+01,   2.60985133e+00],
       [  3.52010365e+00,   5.43377497e+01],
       [  2.23486350e+01,   6.49388479e+01],
       [  6.13829467e+01,   6.56156893e+01],
       [  1.00837126e+01,   1.77990338e+01],
       [ -3.96188628e+01,  -3.02579723e+01],
       [  1.71606376e+01,   2.76488718e+01],
       [ -3.97555306e+01,  -2.31817520e+01],
       [ -3.25049377e+01,  -9.13984579e+00],
       [  4.99521240e+00,   7.77433846e+01],
       [  7.87780437e+00,  -3.59475262e+00],
       [ -7.00674013e+01,  -5.34878660e+01],
       [  1.27302157e+01,   4.13417415e+01],
       [  2.67529419e+01,   6.61490194e+01],
       [ -3.44840727e+01,  -1.65159722e+01],
       [ -5.31016925e+01,  -5.40445723e+01],
       [  6.20580039e+01,   5.26382984e+01],
       [  3.55380855e+01,  -2.69496357e+01],
       [ -1.02068255e+00,   7.30313186e-01],
       [ -1.62509168e+01,   4.15972532e+00],
       [ -1.09794938e+02,  -9.65724027e+01],
       [ -2.74283590e+01,   3.48318182e+01],
       [ -2.33110475e+01,   6.97218478e-01],
       [ -1.02020490e+02,  -1.67333025e+02],
       [ -1.39426087e+01,  -1.09100612e+00],
       [ -2.60368372e+01,  -8.36473949e+01],
       [  9.81440937e+00,   2.92561144e+01],
       [  5.89424151e+00,   1.00023359e+02],
       [ -8.61983724e-02,   4.47903337e+01],
       [  1.87660661e+00,  -7.09117993e+00],
       [ -1.17850799e+01,  -2.91901223e+01],
       [ -5.86930244e+01,  -9.58512106e+01],
       [  2.30075386e+01,  -1.11010098e+01],
       [ -3.03350323e+01,  -1.10269632e+02],
       [ -2.78914017e+01,  -2.84443958e+01],
       [ -6.11206778e+01,  -1.27400129e+02],
       [  5.30261462e+00,   4.21395803e+01],
       [  1.11355361e+01,   3.02636514e+01],
       [ -1.84942325e+01,   5.92079650e+01],
       [  2.37351349e+01,  -4.29730519e+00],
       [  3.24190136e+00,   8.89430664e+00],
       [ -6.38447325e+01,  -1.04496155e+02],
       [ -1.20560136e+01,   3.23104485e+01],
       [ -6.24963346e+01,  -1.24244167e+02],
       [  4.19984525e+00,  -3.87090056e+01],
       [ -2.13534122e+01,  -9.14227926e+01],
       [  1.32873337e+01,  -2.59778589e+01],
       [  4.27924777e+01,   9.55570218e+01],
       [  4.50017405e+00,   5.28235897e+01],
       [  3.84957139e+01,  -1.23396643e+01],
       [  2.08096011e+01,  -3.34510316e+00],
       [ -3.23603927e+01,  -6.58802466e+01],
       [ -2.11759890e+00,  -2.61211872e+01],
       [ -5.96684490e+01,  -1.07042049e+02],
       [  2.86410098e+01,   8.63905834e+01],
       [  1.89509600e+01,   1.03480382e+02],
       [  4.62316394e+01,   3.04975726e+01],
       [  8.13685333e+00,   1.07695160e+02],
       [  2.10333794e+01,   5.09745103e+00],
       [ -8.99379690e+01,  -8.19491265e+01],
       [  3.71873034e+00,  -2.40208941e+01],
       [ -3.88326001e+01,  -4.59935959e+01],
       [  3.59776912e+00,  -1.06760541e+01],
       [  2.14373409e+01,   1.00459106e+01],
       [ -1.13276739e+02,  -1.61110999e+02],
       [ -2.94240817e+01,   3.85438299e-01],
       [ -3.02082229e+01,  -1.16478915e+01],
       [ -5.91888925e+01,  -1.14618584e+02],
       [  2.04874676e+00,   7.29056258e+01],
       [ -8.38997565e+01,  -1.46949848e+02],
       [ -2.81931712e+01,   4.75959194e+00],
       [ -2.42574566e+01,   1.98573934e+01],
       [ -3.10254229e+01,   1.00039230e+01],
       [ -8.45190335e+00,  -3.49042074e+00],
       [  2.43500235e+00,   1.47538714e+01],
       [ -4.22615291e+01,  -6.47293437e+01],
       [  1.60130488e+01,   3.98840766e+01],
       [ -1.70137881e+01,  -1.46011542e+01],
       [ -6.95329283e+01,  -1.07383528e+02],
       [  5.01063077e+00,   2.90637208e+01],
       [  1.28549056e+01,   4.93922005e+01],
       [ -4.22151043e+01,  -1.24111692e+02],
       [ -7.30595037e+00,  -1.05682393e+02],
       [  6.61752813e+01,   1.55104413e+01],
       [ -4.69710721e+01,  -1.16508404e+02],
       [ -2.92513672e+01,  -1.03086823e+02],
       [  6.79835527e+01,  -4.95196983e+01],
       [ -9.12793256e+00,   4.52375291e+01],
       [  1.86699770e+01,   4.23704359e+01],
       [  4.65315672e+00,   3.36462224e+01],
       [ -1.70527305e+00,  -4.43716477e+01],
       [ -4.09513899e+01,  -4.34374086e+01],
       [ -2.39425139e+01,  -8.99868988e+01],
       [  1.41920097e+01,   7.47563089e+01],
       [  3.28885334e+00,   6.20549683e+00],
       [ -1.62013914e+01,  -9.11653546e+01],
       [  4.33148322e+01,   1.04535799e+02],
       [  1.18563813e+01,   5.06510932e+00],
       [  3.13453758e+01,  -1.03596478e-01],
       [ -7.80898897e+00,   1.19724085e+01],
       [  1.13588975e+00,  -2.10380376e+01],
       [ -8.61649851e+00,   5.20725350e-02],
       [ -8.37792732e+01,  -1.27493762e+02],
       [ -1.40136562e+01,   5.56307170e+00],
       [  5.01643392e+01,   3.89728166e+01],
       [ -1.75799984e+01,  -9.43101474e+01],
       [ -1.97685070e+01,   1.21174929e+01],
       [ -4.99079577e+01,  -1.37843813e+02],
       [  4.59507291e+01,  -4.33159058e+00],
       [ -4.81335395e+01,  -9.71516753e+01],
       [ -7.95860423e+01,  -1.45605312e+02],
       [ -5.63073799e+01,  -1.11104781e+02],
       [ -1.14013231e+01,  -2.07468168e+01],
       [ -6.51549446e+01,  -6.02160843e+01],
       [ -3.22884230e+01,  -1.27575386e+01],
       [ -2.14840960e+01,   3.34585188e+01],
       [ -3.40604979e+01,  -5.42359221e+01],
       [  2.83988827e+01,   2.19223415e+01],
       [ -2.65791059e+01,  -8.72688840e+01],
       [ -4.58395022e+01,  -8.58653220e+01],
       [  1.29050690e+01,  -1.17264833e+01],
       [ -1.79194610e+01,  -1.81833120e+01],
       [  1.08329885e+01,   1.07297615e+02],
       [ -3.29719466e+01,  -8.35562262e+01],
       [ -7.13811586e+00,   6.65657450e+01],
       [ -3.70644598e+01,  -9.63884610e+01],
       [  1.14902184e+01,   5.11819963e+01],
       [ -7.44506687e+01,  -9.67282356e+01],
       [  2.24428771e+01,  -1.40734247e+01],
       [  3.56235567e+01,   1.24101909e+02],
       [  1.06146795e+01,  -4.82338157e+01],
       [  1.72794340e+01,  -3.72535334e+01],
       [  1.95171344e+01,   2.06207856e+00],
       [  3.45760251e+01,   7.45998084e+01],
       [ -1.29882524e+01,  -7.12422132e+00],
       [  1.83066291e+00,   3.94781729e+01],
       [ -3.60745046e+01,   1.67214689e+01],
       [  1.97720481e+01,   1.06250453e+02],
       [  2.38995668e+01,   1.15619988e+02],
       [ -7.44068376e+00,  -9.76421452e+01],
       [ -1.70107436e+01,  -4.71864433e+01],
       [ -4.33654787e+01,  -6.03405762e+01],
       [  6.29134570e+00,   2.92820162e+01],
       [ -6.67959349e+01,  -3.25384589e+01],
       [ -1.22547324e+01,   2.24985191e+00],
       [ -7.24926486e+01,  -9.83363996e+01],
       [ -1.67705798e+01,  -5.63257327e+00],
       [  5.74682317e+00,   2.56004831e+01],
       [ -2.14658437e+01,  -7.62548436e+00],
       [ -8.21480827e+00,   1.52086562e+01],
       [ -1.68582518e+01,   3.94209437e+00],
       [ -4.53258620e+01,  -6.88811944e+01],
       [  4.67147707e+01,   7.58368848e+01],
       [ -2.76875684e+01,  -4.22800933e+01],
       [  4.68635548e+00,   6.46423610e+01],
       [ -6.65319390e+01,  -5.03562371e+00],
       [ -7.52282762e+01,  -4.82734357e+01],
       [  2.77459217e+01,   2.23751331e+01],
       [ -1.78900451e+01,  -1.92289936e+01],
       [ -8.50657221e+00,  -5.54672664e+01],
       [ -1.90284131e+01,  -3.83828281e+00],
       [ -6.68680226e+01,  -8.49107343e+01],
       [  5.81123202e+01,   7.58420176e+01],
       [ -2.92480631e+01,   5.30968645e+01],
       [  5.14500923e+00,   5.97181753e+01],
       [  1.23527305e+01,   1.82361569e+01],
       [ -1.22010998e+01,   3.17718673e+01],
       [ -1.92160784e+01,   3.37933300e+01],
       [ -1.62361953e+01,  -1.13038374e+01],
       [ -1.93831045e+01,  -3.51471836e+01],
       [ -1.82374046e+01,  -1.15015381e+01],
       [ -5.99462302e+01,  -8.16171720e+01],
       [  8.70188638e+01,   9.88312397e+01],
       [ -1.35494444e+00,   5.81828540e+00],
       [  3.68754002e+01,   2.66397190e+01],
       [ -1.83167129e+01,  -7.06388290e+00],
       [ -6.43374489e+00,   5.12500565e+01],
       [ -5.81508440e+01,  -1.12278824e+02],
       [ -1.06748554e+01,  -2.54180684e+00],
       [ -8.12527644e+01,  -8.65721040e+01],
       [ -6.35012080e+00,   7.01628287e-01],
       [ -5.62022407e+01,  -6.33273583e-01],
       [ -1.36783937e+01,   5.60405924e+01],
       [ -5.24387880e+01,   1.95795813e+01],
       [ -3.47479695e+01,  -3.62846348e+01],
       [ -2.12123906e+01,  -4.09178370e+01],
       [ -6.61846626e+01,  -6.56800263e+01],
       [ -8.18225964e+01,  -4.04273892e+01],
       [ -2.69103519e+01,  -3.69885750e+01],
       [  8.95608625e+01,   4.52457367e+01],
       [  5.01260958e+01,   7.02252585e+01],
       [  1.94484652e+00,   3.84813753e+00],
       [ -4.28872361e+01,  -3.20589920e+01],
       [ -8.98564239e+01,  -8.23745469e+01],
       [  2.98895928e+00,  -6.91559878e+00],
       [ -2.77333725e+01,  -2.96273702e+01],
       [ -3.77593476e+01,   2.27121819e+01],
       [ -2.79891153e+01,  -2.05309095e+01],
       [ -3.57432734e+01,  -2.50527766e+01],
       [ -5.70882986e+01,  -3.64720080e+00],
       [ -5.46994736e+01,  -2.63330874e+01],
       [ -5.07665137e+01,  -3.39588190e+01],
       [ -2.87982268e+01,  -1.17080609e+01],
       [ -3.04189882e+01,  -1.04789375e-01],
       [ -4.45084656e+01,  -1.30849337e+02],
       [ -3.04406065e+01,  -7.81328306e+00],
       [ -9.63503569e+00,   8.99003473e+00],
       [ -7.60431946e+01,  -6.25971896e+01],
       [ -5.77468535e+01,  -1.03657968e+02],
       [ -5.09229171e+01,  -1.75123141e+00],
       [ -8.81622294e+01,  -9.91135656e+01],
       [ -8.70472247e+01,  -8.48220083e+01],
       [  7.23969500e+01,   7.14964319e+01],
       [  2.35059210e+01,   5.20683432e+01],
       [ -4.42381392e+00,   4.54559952e+01],
       [  1.02718054e+01,   7.23534434e+01],
       [  1.07252450e+02,   9.06331944e+01],
       [ -7.57130290e+00,   1.79457873e+01],
       [  1.08843815e+01,   4.55904383e+01],
       [  1.47778746e+01,   6.75029672e+01],
       [ -1.66796790e+01,   9.49962510e-01],
       [  5.50620403e+00,   3.02944433e+01],
       [  7.20168767e+00,   6.38510782e+00],
       [ -4.27170093e+01,  -1.81727727e+01],
       [ -3.98313240e+01,  -1.03686979e+01],
       [ -4.09126168e+01,  -2.66002747e+01],
       [ -5.44307995e+01,  -4.02548763e+01],
       [  8.86048329e-01,  -4.06978644e+00],
       [ -1.99943640e+01,  -1.46541117e+01],
       [ -1.76822311e+00,  -1.32123577e+01],
       [ -1.60374910e+01,   3.14149513e+01],
       [ -7.90536629e+01,  -8.13677465e+01],
       [ -6.25636662e+01,  -2.04243149e+01],
       [ -3.07229004e+01,  -6.38533461e+01],
       [  4.13415973e+00,  -4.47442583e+01],
       [  5.45096701e+01,   7.65868818e+01],
       [  5.64490611e+00,   5.15878010e+01],
       [ -7.81343451e+01,  -1.19390776e+02],
       [  9.67893980e-01,   4.96521825e-01],
       [ -7.95078824e+01,  -8.77522397e+01],
       [ -8.88050364e+00,   7.61399652e+00],
       [  1.36551847e+01,   4.49722410e+01],
       [  2.05569675e+01,  -4.96169424e-01],
       [ -8.40852418e+00,   8.34359180e+01],
       [ -2.53260780e+01,  -2.19572443e+01],
       [  6.68057229e+01,   1.29067680e+01],
       [ -5.95429103e+01,  -5.83588676e+01],
       [  6.03947767e+00,   2.23981665e+00],
       [  3.05547694e+01,   7.80232233e+01],
       [ -2.90871255e+01,  -3.28070157e+01],
       [ -1.96019663e+01,  -3.09834307e+01],
       [ -7.56966288e+01,  -9.37226632e+01],
       [  7.55566996e+00,   4.87836740e+01],
       [  7.17808733e+00,   3.14558368e+01],
       [  1.91970435e+01,   4.21492914e+01],
       [  6.28322181e+01,   9.02204533e+01],
       [  2.41713835e+01,  -6.17648856e+01],
       [  6.48185757e-02,   8.84676806e+00],
       [  6.43091465e+01,   3.16220589e+01],
       [  6.49845895e+01,   7.46283260e+01],
       [ -1.01311383e+01,  -4.02404004e+01],
       [ -3.47273942e+01,  -3.86795846e+01],
       [ -3.97845352e+01,  -5.16338892e+01],
       [ -2.04241652e+01,  -6.08776492e+00],
       [ -8.55999267e+00,  -1.47520846e+01],
       [ -4.01986956e+01,  -3.61239276e+01],
       [  6.56516557e+00,  -2.80343757e+01],
       [ -3.68203129e+01,  -3.30406179e+00],
       [ -3.37768274e+01,   7.23352435e+01],
       [  9.22294238e+01,   7.58326191e+01],
       [ -3.83840301e+01,  -5.06163863e+01],
       [ -5.02349714e+01,  -5.40857580e+01],
       [  3.41336971e+01,   4.69431523e+01],
       [ -5.59742244e+01,  -5.01394710e+01],
       [ -5.31908748e+00,   5.25630642e+00],
       [ -7.80575099e+00,   3.79530078e+01],
       [ -1.04556169e+01,   3.02720639e+01],
       [ -6.27465605e+01,  -1.04291658e+02],
       [ -2.72709256e+01,  -5.33931281e+01],
       [ -8.40066689e+01,  -1.39477435e+02],
       [  2.94920941e+01,   2.38451717e+01],
       [ -8.35476449e+01,  -1.17860252e+02],
       [  4.78892016e+01,  -6.10016960e+01],
       [ -2.33176748e+00,  -1.80794834e+01],
       [  8.44724036e+00,   7.15162661e+01],
       [ -1.00558137e+01,   2.55515640e+01],
       [ -2.82893495e+01,  -2.83655772e+01],
       [ -7.67813929e+01,  -1.09117481e+02],
       [ -3.48570217e+01,  -3.98137167e+01],
       [ -3.06506335e+01,  -4.85179886e+01],
       [  3.33286658e+01,   7.90402342e+00],
       [ -4.08781971e+01,  -8.06524680e+01],
       [  6.75910599e+01,   7.32196740e-01],
       [  4.30770356e+00,   6.71375282e+01],
       [  1.11383196e+01,   3.13151668e+01],
       [ -1.64789427e+01,   4.13270737e+01],
       [ -4.40333721e+00,  -2.43450997e+00],
       [ -7.30087922e+01,  -3.49975128e+01],
       [  4.70338583e+00,   9.70990830e+00],
       [ -6.14831728e+01,  -8.37006414e+01],
       [  2.60937085e+01,   2.42384206e+01],
       [ -3.41030987e+01,  -9.73633227e+01],
       [  5.18392864e+01,  -3.32843904e+01],
       [  3.33150907e+00,   4.07423623e+01],
       [ -3.39021336e+01,   4.30057892e+01],
       [ -7.37786723e+00,   5.85820770e+01],
       [ -8.08320564e+00,   9.99704826e+00],
       [ -9.57716833e+01,  -5.02748209e+01],
       [  1.98493432e+01,   3.43659805e+00],
       [ -8.06321677e+01,  -5.15373140e+01],
       [ -8.89422510e+00,  -5.66990103e+01],
       [ -5.96856293e+00,   2.54494038e+01],
       [ -1.47125858e+01,   3.57880640e+01],
       [ -3.63115424e+01,  -1.03219039e+02],
       [ -3.38550029e+00,  -4.69118254e+01],
       [ -6.88082782e+01,  -2.28367243e+01],
       [ -4.23159829e+01,  -1.34189218e+01],
       [ -7.61244904e+01,  -6.45903097e+01],
       [ -9.49717732e+00,  -2.10083125e+01],
       [  2.51545777e+01,   2.17442525e+01],
       [ -5.42322563e+01,  -1.01434343e+02],
       [ -1.78060336e+01,   2.31292504e+01],
       [ -2.37854214e+01,   3.16078768e+01],
       [ -9.44838801e+01,  -9.87571871e+01],
       [ -1.82232828e+01,   3.35791249e+01],
       [ -3.65191925e+01,  -6.39902052e+01],
       [ -1.80492481e+01,   5.93612473e+00],
       [ -1.72214094e+01,   1.33129351e+01],
       [  5.07161780e+01,  -2.03423271e+01],
       [  2.97304659e+01,  -2.84394705e+01],
       [ -8.26279515e+00,   4.10961450e+01],
       [ -3.56409044e+01,  -5.90879486e+01],
       [  2.71355895e+01,  -2.00927291e+01],
       [ -3.46939628e+01,  -4.62152025e+01],
       [  2.69927631e+01,  -2.27732773e+00],
       [  3.68552111e+01,  -1.76153702e+00],
       [ -8.96481127e+00,   1.06568193e+01],
       [ -7.96404323e+01,  -9.92250393e+01],
       [ -6.61439930e+01,  -5.34088378e+01],
       [ -3.39365984e+01,   2.90194480e+01],
       [ -4.53618406e+01,  -7.57534719e+01],
       [ -4.23714214e+01,  -6.17151410e+01],
       [  6.57113459e+01,  -1.41148903e+01],
       [ -2.77083818e+01,   4.58005570e+01],
       [  7.35482599e+00,   4.11110595e+01],
       [ -2.26585846e+01,   5.42164443e+01],
       [  3.70196441e+01,  -4.06798560e+01],
       [ -7.52238760e+01,  -7.87949202e+01],
       [ -7.44148416e+01,  -9.06192160e+01],
       [ -4.09447868e+01,  -7.30779333e+01],
       [ -5.48753870e+00,  -1.42526435e+01],
       [ -7.15579178e+01,  -2.64281591e+01],
       [ -2.62553494e+01,   1.79822315e+01],
       [  4.60600080e+01,  -7.65606223e+00],
       [ -5.92189812e+01,  -7.52374321e+01],
       [  1.37601144e+01,   4.49603667e+00],
       [ -3.31360542e+01,  -3.47472848e+01],
       [ -3.04873481e+01,  -2.52848500e+00],
       [ -3.42548958e+01,  -2.42141622e+01],
       [ -2.14325975e+01,   3.72191260e+01],
       [  1.60822062e+00,   4.46251463e+01],
       [ -4.90627549e+01,  -8.02949005e+01],
       [ -1.29401460e-01,   2.01844132e+01],
       [ -2.81861514e+01,  -5.95892881e+00],
       [ -8.21135427e+00,   1.12484573e+01],
       [  5.70809730e+00,  -5.93851479e+01],
       [ -2.94744183e+01,   3.62889331e+01],
       [ -3.46236374e+01,  -4.32383028e+01],
       [ -4.36520564e+01,  -7.77582520e+01],
       [ -4.69603659e+01,  -7.46796979e+01],
       [ -6.25903542e+01,  -2.74598921e+01],
       [ -7.49744295e+01,  -6.66595136e+01],
       [  1.77290619e+01,   2.01632692e+01],
       [ -3.21693498e+01,   2.53795455e+01],
       [ -5.05337477e+00,  -1.07238108e+01],
       [  6.96548703e+01,  -2.10307924e+01],
       [ -5.29945555e+01,  -6.00678736e+01],
       [ -6.19364252e+01,  -6.06278698e+01],
       [  5.01120807e+01,  -2.73801478e-01],
       [ -1.37761998e+01,  -3.86256931e+01],
       [  2.35729462e+01,   2.52171607e+00],
       [ -2.41767160e+01,  -8.66087384e+01],
       [ -1.15151537e+01,   5.28877582e+01],
       [ -6.06707943e+01,   2.76723225e-01],
       [  3.60641426e+00,   7.54529218e+01],
       [ -6.55384683e+01,  -9.06634358e+01],
       [ -2.07628477e+01,   3.98144772e+01],
       [ -3.88858674e+01,   1.30983966e+01],
       [ -2.43383945e+01,  -5.80040245e+01],
       [  3.59298559e+01,  -3.68331211e+01],
       [ -1.34045974e+01,   3.89178550e+01],
       [ -2.88383257e+00,   1.58036871e+01]])

In [51]:
def objective(A,X,Y):
    assert(X.shape[1]==A.shape[0])
    X_ = X.dot(A)
    P_ = stoch_neighbor_assignments(X_)
    #p_ = correct_classification_prob(P_,Y)
    #correct_class_expectation_ = sum(p_) / len(p_)
    #return correct_class_expectation_
    return exp_class_accuracy_vectorized(P_,Y)

In [52]:
A = npr.randn(64,2)

In [53]:
objective(A,X,Y)


Out[53]:
0.29509658631114022

In [54]:
plt.scatter(X.dot(A)[:,0],X.dot(A)[:,1],c=Y)


Out[54]:
<matplotlib.collections.PathCollection at 0x10bb4df10>

In [55]:
%timeit objective(A,X,Y)


100 loops, best of 3: 9.05 ms per loop

In [56]:
%prun objective(A,X,Y)


 

In [276]:
# for large inputs, use ball-trees instead of computing the full P_ij matrix

In [57]:
# construct a function we can pass to scipy optimize
def objective_vec(A):
    A_ = np.reshape(A,(X.shape[1],2))
    return objective(A_,X,Y)

In [58]:
A = npr.randn(X.shape[1]*2)
A_ = np.reshape(A,(X.shape[1],2))
A_.shape


Out[58]:
(64, 2)

In [59]:
objective_vec(npr.randn(64*2))


/Users/joshuafass/anaconda/envs/py27/lib/python2.7/site-packages/IPython/kernel/__main__.py:5: RuntimeWarning: invalid value encountered in divide
Out[59]:
0.37512276719190729

In [ ]:


In [303]:
from scipy.optimize import minimize,basinhopping

In [296]:
A_init = pca.components_.T
A_init.shape


Out[296]:
(64, 2)

In [298]:
objective(A_init,X,Y)


Out[298]:
0.58038054627365865

In [299]:
A_init_vec = np.reshape(A_init,np.prod(A_init.shape))

In [301]:
obj_min = lambda A:-objective_vec(A)

In [306]:
obj_min(A_init_vec)


Out[306]:
-0.58038054627365865

In [307]:
res = minimize(obj_min,A_init_vec,options={'maxiter':2,'disp':True})


---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
<ipython-input-307-14b235d5df2a> in <module>()
----> 1 res = minimize(obj_min,A_init_vec,options={'maxiter':2,'disp':True})

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/_minimize.py in minimize(fun, x0, args, method, jac, hess, hessp, bounds, constraints, tol, callback, options)
    417         return _minimize_cg(fun, x0, args, jac, callback, **options)
    418     elif meth == 'bfgs':
--> 419         return _minimize_bfgs(fun, x0, args, jac, callback, **options)
    420     elif meth == 'newton-cg':
    421         return _minimize_newtoncg(fun, x0, args, jac, hess, hessp, callback,

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/optimize.py in _minimize_bfgs(fun, x0, args, jac, callback, gtol, norm, eps, maxiter, disp, return_all, **unknown_options)
    853             alpha_k, fc, gc, old_fval, old_old_fval, gfkp1 = \
    854                      _line_search_wolfe12(f, myfprime, xk, pk, gfk,
--> 855                                           old_fval, old_old_fval)
    856         except _LineSearchError:
    857             # Line search failed to find a better solution.

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/optimize.py in _line_search_wolfe12(f, fprime, xk, pk, gfk, old_fval, old_old_fval, **kwargs)
    688     ret = line_search_wolfe1(f, fprime, xk, pk, gfk,
    689                              old_fval, old_old_fval,
--> 690                              **kwargs)
    691 
    692     if ret[0] is None:

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/linesearch.py in line_search_wolfe1(f, fprime, xk, pk, gfk, old_fval, old_old_fval, args, c1, c2, amax, amin, xtol)
     94     stp, fval, old_fval = scalar_search_wolfe1(
     95             phi, derphi, old_fval, old_old_fval, derphi0,
---> 96             c1=c1, c2=c2, amax=amax, amin=amin, xtol=xtol)
     97 
     98     return stp, fc[0], gc[0], fval, old_fval, gval[0]

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/linesearch.py in scalar_search_wolfe1(phi, derphi, phi0, old_phi0, derphi0, c1, c2, amax, amin, xtol)
    166             alpha1 = stp
    167             phi1 = phi(stp)
--> 168             derphi1 = derphi(stp)
    169         else:
    170             break

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/linesearch.py in derphi(s)
     83 
     84     def derphi(s):
---> 85         gval[0] = fprime(xk + s*pk, *newargs)
     86         if gradient:
     87             gc[0] += 1

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/optimize.py in function_wrapper(*wrapper_args)
    280     def function_wrapper(*wrapper_args):
    281         ncalls[0] += 1
--> 282         return function(*(wrapper_args + args))
    283 
    284     return ncalls, function_wrapper

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/optimize.py in approx_fprime(xk, f, epsilon, *args)
    614 
    615     """
--> 616     return _approx_fprime_helper(xk, f, epsilon, args=args)
    617 
    618 

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/optimize.py in _approx_fprime_helper(xk, f, epsilon, args, f0)
    554         ei[k] = 1.0
    555         d = epsilon * ei
--> 556         grad[k] = (f(*((xk + d,) + args)) - f0) / d[k]
    557         ei[k] = 0.0
    558     return grad

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/optimize.py in function_wrapper(*wrapper_args)
    280     def function_wrapper(*wrapper_args):
    281         ncalls[0] += 1
--> 282         return function(*(wrapper_args + args))
    283 
    284     return ncalls, function_wrapper

<ipython-input-301-1883b3e6bc6a> in <lambda>(A)
----> 1 obj_min = lambda A:-objective_vec(A)

<ipython-input-283-7f8acf3b6a29> in objective_vec(A)
      2 def objective_vec(A):
      3     A_ = np.reshape(A,(X.shape[1],2))
----> 4     return objective(A_,X,Y)

<ipython-input-272-4acce4b08f9c> in objective(A, X, Y)
      2     assert(X.shape[1]==A.shape[0])
      3     X_ = X.dot(A)
----> 4     P_ = stoch_neighbor_assignments(X_)
      5     #p_ = correct_classification_prob(P_,Y)
      6     #correct_class_expectation_ = sum(p_) / len(p_)

<ipython-input-144-a4200001157f> in stoch_neighbor_assignments(X)
      1 # stochastic neighbor assignments
      2 def stoch_neighbor_assignments(X):
----> 3     P = squareform(np.exp(-(pdist(X)**2)))
      4     P -= np.diag(P)
      5     return np.nan_to_num(P/P.sum(1)) # columns sum to 1

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/spatial/distance.py in pdist(X, metric, p, w, V, VI)
   1219         #    TypeError('A double array must be passed.')
   1220         if mstr in set(['euclidean', 'euclid', 'eu', 'e']):
-> 1221             _distance_wrap.pdist_euclidean_wrap(_convert_to_double(X), dm)
   1222         elif mstr in set(['sqeuclidean', 'sqe', 'sqeuclid']):
   1223             _distance_wrap.pdist_sqeuclidean_wrap(_convert_to_double(X), dm)

KeyboardInterrupt: 

In [310]:
def gradient(func,x0,h=0.001):
    x0 = np.array(x0)#,dtype=float)
    y = func(x0)
    deriv = np.zeros(len(x0))
    for i in range(len(x0)):
        x = np.array(x0)
        x[i] += h
        deriv[i] = (func(x) - y)/h
    return deriv

In [311]:
%timeit obj_min(A_init_vec)


1 loops, best of 3: 167 ms per loop

In [312]:
len(A_init_vec)


Out[312]:
128

In [313]:
gradient(obj_min,A_init_vec)


---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
<ipython-input-313-6c7e032d8459> in <module>()
----> 1 gradient(obj_min,A_init_vec)

<ipython-input-310-0b13708518ed> in gradient(func, x0, h)
      6         x = np.array(x0)
      7         x[i] += h
----> 8         deriv[i] = (func(x) - y)/h
      9     return deriv

<ipython-input-301-1883b3e6bc6a> in <lambda>(A)
----> 1 obj_min = lambda A:-objective_vec(A)

<ipython-input-283-7f8acf3b6a29> in objective_vec(A)
      2 def objective_vec(A):
      3     A_ = np.reshape(A,(X.shape[1],2))
----> 4     return objective(A_,X,Y)

<ipython-input-272-4acce4b08f9c> in objective(A, X, Y)
      2     assert(X.shape[1]==A.shape[0])
      3     X_ = X.dot(A)
----> 4     P_ = stoch_neighbor_assignments(X_)
      5     #p_ = correct_classification_prob(P_,Y)
      6     #correct_class_expectation_ = sum(p_) / len(p_)

KeyboardInterrupt: 

In [ ]:
def obj_grad(A,X,Y)

In [ ]:
def gradient(A,X,Y):
    X_ = X.dot(A)
    P_ = stoch_neighbor_assignments(X_)
    s = 0
    for i in range(len(X_)):
        s+=
    return

In [302]:
res = basinhopping(obj_min,A_init_vec,disp=True)


---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
<ipython-input-302-b4ecb7578def> in <module>()
----> 1 res = basinhopping(obj_min,A_init_vec,disp=True)

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/_basinhopping.py in basinhopping(func, x0, niter, T, stepsize, minimizer_kwargs, take_step, accept_test, callback, interval, disp, niter_success)
    604 
    605     bh = BasinHoppingRunner(x0, wrapped_minimizer, take_step_wrapped,
--> 606                             accept_tests, disp=disp)
    607 
    608     # start main iteration loop

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/_basinhopping.py in __init__(self, x0, minimizer, step_taking, accept_tests, disp)
     70 
     71         # do initial minimization
---> 72         minres = minimizer(self.x)
     73         if not minres.success:
     74             self.res.minimization_failures += 1

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/_basinhopping.py in __call__(self, x0)
    277             return self.minimizer(x0, **self.kwargs)
    278         else:
--> 279             return self.minimizer(self.func, x0, **self.kwargs)
    280 
    281 

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/_minimize.py in minimize(fun, x0, args, method, jac, hess, hessp, bounds, constraints, tol, callback, options)
    417         return _minimize_cg(fun, x0, args, jac, callback, **options)
    418     elif meth == 'bfgs':
--> 419         return _minimize_bfgs(fun, x0, args, jac, callback, **options)
    420     elif meth == 'newton-cg':
    421         return _minimize_newtoncg(fun, x0, args, jac, hess, hessp, callback,

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/optimize.py in _minimize_bfgs(fun, x0, args, jac, callback, gtol, norm, eps, maxiter, disp, return_all, **unknown_options)
    853             alpha_k, fc, gc, old_fval, old_old_fval, gfkp1 = \
    854                      _line_search_wolfe12(f, myfprime, xk, pk, gfk,
--> 855                                           old_fval, old_old_fval)
    856         except _LineSearchError:
    857             # Line search failed to find a better solution.

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/optimize.py in _line_search_wolfe12(f, fprime, xk, pk, gfk, old_fval, old_old_fval, **kwargs)
    688     ret = line_search_wolfe1(f, fprime, xk, pk, gfk,
    689                              old_fval, old_old_fval,
--> 690                              **kwargs)
    691 
    692     if ret[0] is None:

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/linesearch.py in line_search_wolfe1(f, fprime, xk, pk, gfk, old_fval, old_old_fval, args, c1, c2, amax, amin, xtol)
     94     stp, fval, old_fval = scalar_search_wolfe1(
     95             phi, derphi, old_fval, old_old_fval, derphi0,
---> 96             c1=c1, c2=c2, amax=amax, amin=amin, xtol=xtol)
     97 
     98     return stp, fc[0], gc[0], fval, old_fval, gval[0]

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/linesearch.py in scalar_search_wolfe1(phi, derphi, phi0, old_phi0, derphi0, c1, c2, amax, amin, xtol)
    166             alpha1 = stp
    167             phi1 = phi(stp)
--> 168             derphi1 = derphi(stp)
    169         else:
    170             break

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/linesearch.py in derphi(s)
     83 
     84     def derphi(s):
---> 85         gval[0] = fprime(xk + s*pk, *newargs)
     86         if gradient:
     87             gc[0] += 1

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/optimize.py in function_wrapper(*wrapper_args)
    280     def function_wrapper(*wrapper_args):
    281         ncalls[0] += 1
--> 282         return function(*(wrapper_args + args))
    283 
    284     return ncalls, function_wrapper

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/optimize.py in approx_fprime(xk, f, epsilon, *args)
    614 
    615     """
--> 616     return _approx_fprime_helper(xk, f, epsilon, args=args)
    617 
    618 

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/optimize.py in _approx_fprime_helper(xk, f, epsilon, args, f0)
    554         ei[k] = 1.0
    555         d = epsilon * ei
--> 556         grad[k] = (f(*((xk + d,) + args)) - f0) / d[k]
    557         ei[k] = 0.0
    558     return grad

/Users/joshuafass/anaconda/lib/python3.4/site-packages/scipy/optimize/optimize.py in function_wrapper(*wrapper_args)
    280     def function_wrapper(*wrapper_args):
    281         ncalls[0] += 1
--> 282         return function(*(wrapper_args + args))
    283 
    284     return ncalls, function_wrapper

<ipython-input-301-1883b3e6bc6a> in <lambda>(A)
----> 1 obj_min = lambda A:-objective_vec(A)

<ipython-input-283-7f8acf3b6a29> in objective_vec(A)
      2 def objective_vec(A):
      3     A_ = np.reshape(A,(X.shape[1],2))
----> 4     return objective(A_,X,Y)

<ipython-input-272-4acce4b08f9c> in objective(A, X, Y)
      2     assert(X.shape[1]==A.shape[0])
      3     X_ = X.dot(A)
----> 4     P_ = stoch_neighbor_assignments(X_)
      5     #p_ = correct_classification_prob(P_,Y)
      6     #correct_class_expectation_ = sum(p_) / len(p_)

<ipython-input-144-a4200001157f> in stoch_neighbor_assignments(X)
      2 def stoch_neighbor_assignments(X):
      3     P = squareform(np.exp(-(pdist(X)**2)))
----> 4     P -= np.diag(P)
      5     return np.nan_to_num(P/P.sum(1)) # columns sum to 1

KeyboardInterrupt: 

In [308]:
from scipy.optimize import minimize, rosen, rosen_der

In [309]:
x0 = [1.3, 0.7, 0.8, 1.9, 1.2]
res = minimize(rosen, x0, method='Nelder-Mead')
res.x


Out[309]:
array([ 0.99910115,  0.99820923,  0.99646346,  0.99297555,  0.98600385])

In [63]:
from autograd import grad
import autograd.numpy as np

In [64]:
grad(objective_vec)(npr.randn(64*2))


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-64-c9f5181bb145> in <module>()
----> 1 grad(objective_vec)(npr.randn(64*2))

/Users/joshuafass/anaconda/envs/py27/lib/python2.7/site-packages/autograd/core.pyc in gradfun(*args, **kwargs)
     13     the same type as the argument."""
     14     def gradfun(*args,**kwargs):
---> 15         return backward_pass(*forward_pass(fun,args,kwargs,argnum))
     16 
     17     try:

/Users/joshuafass/anaconda/envs/py27/lib/python2.7/site-packages/autograd/core.pyc in forward_pass(fun, args, kwargs, argnum)
     31         args = list(args)
     32         args[argnum] = merge_tapes(start_node, arg_wrt)
---> 33         end_node = fun(*args, **kwargs)
     34         return start_node, end_node, tape
     35 

<ipython-input-57-7f8acf3b6a29> in objective_vec(A)
      2 def objective_vec(A):
      3     A_ = np.reshape(A,(X.shape[1],2))
----> 4     return objective(A_,X,Y)

<ipython-input-51-4acce4b08f9c> in objective(A, X, Y)
      2     assert(X.shape[1]==A.shape[0])
      3     X_ = X.dot(A)
----> 4     P_ = stoch_neighbor_assignments(X_)
      5     #p_ = correct_classification_prob(P_,Y)
      6     #correct_class_expectation_ = sum(p_) / len(p_)

<ipython-input-11-a4200001157f> in stoch_neighbor_assignments(X)
      1 # stochastic neighbor assignments
      2 def stoch_neighbor_assignments(X):
----> 3     P = squareform(np.exp(-(pdist(X)**2)))
      4     P -= np.diag(P)
      5     return np.nan_to_num(P/P.sum(1)) # columns sum to 1

/Users/joshuafass/anaconda/envs/py27/lib/python2.7/site-packages/scipy/spatial/distance.pyc in pdist(X, metric, p, w, V, VI)
   1176 
   1177     # The C code doesn't do striding.
-> 1178     [X] = _copy_arrays_if_base_present([_convert_to_double(X)])
   1179 
   1180     s = X.shape

/Users/joshuafass/anaconda/envs/py27/lib/python2.7/site-packages/scipy/spatial/distance.pyc in _convert_to_double(X)
    111 def _convert_to_double(X):
    112     if X.dtype != np.double:
--> 113         X = X.astype(np.double)
    114     if not X.flags.contiguous:
    115         X = X.copy()

TypeError: float() argument must be a string or a number

In [ ]: