In [1]:
import theano
import theano.tensor as T
from theano import function

# logistic function
x = T.dmatrix('x')
s = 1 / (1 + T.exp(-x))
logistic = function([x], s) # elementwise
logistic([[-2, -1], [1,2]])


Out[1]:
array([[ 0.11920292,  0.26894142],
       [ 0.73105858,  0.88079708]])

In [2]:
# multiple output
a, b = T.dmatrices('a', 'b')
diff = a - b
abs_diff = abs(diff)
diff_squared = diff ** 2 
f = function([a,b], [diff, abs_diff, diff_squared])
f([[1,2], [5,1]], [[10,-2], [3,1]])


Out[2]:
[array([[-9.,  4.],
        [ 2.,  0.]]), array([[ 9.,  4.],
        [ 2.,  0.]]), array([[ 81.,  16.],
        [  4.,   0.]])]

In [3]:
# setting default value
from theano import Param
x, y = T.dscalars('x', 'y')
z = x + y
f = function([x, Param(y, default = 1)], z)
f(33)


Out[3]:
array(34.0)

In [4]:
f(31,2)


Out[4]:
array(33.0)

In [5]:
# naming paramators
x, y = T.dscalars('x', 'y')
z = x + y
f = function([x, Param(y, default = 1, name = 'y_value')], z)
f(33, y_value = 5)


Out[5]:
array(38.0)

In [6]:
# shared variables
# accumulator is a process
# state is an output
from theano import shared
state = shared(0)
inc = T.iscalar('inc')
accumulator = function([inc], state, updates = [(state, state+inc)])

In [7]:
state.get_value()


Out[7]:
array(0)

In [8]:
accumulator(1)


Out[8]:
array(0)

In [9]:
state.get_value()


Out[9]:
array(1)

In [10]:
accumulator(300)


Out[10]:
array(1)

In [11]:
state.get_value()


Out[11]:
array(301)

In [12]:
state.set_value(-1)

In [13]:
state.get_value()


Out[13]:
array(-1)

In [14]:
accumulator(3)


Out[14]:
array(-1)

In [15]:
state.get_value()


Out[15]:
array(2)

In [16]:
decrementor = function([inc], state, updates=[(state, state-inc)])
decrementor(2)


Out[16]:
array(2)

In [17]:
state.get_value()


Out[17]:
array(0)

In [18]:
# givens paramator
up_state = state * 2 + inc
foo = T.scalar(dtype = state.dtype)
skip_shared = function([inc, foo], up_state, givens = [(state, foo)])
skip_shared(1,3)


Out[18]:
array(7)

In [19]:
skip_shared(1,3)


Out[19]:
array(7)

In [20]:
# old state is still there and we do not use it
state.get_value()


Out[20]:
array(0)

In [21]:
accumulator(300)


Out[21]:
array(0)

In [22]:
state.get_value()


Out[22]:
array(300)

In [23]:
# output is the same because we use foo instead of state
skip_shared(1,3)


Out[23]:
array(7)

In [3]:
# random variable
# basic example
from theano.tensor.shared_randomstreams import RandomStreams
from theano import function
srng = RandomStreams(seed = 234)
rv_u = srng.uniform((2,2))
rv_n = srng.normal((2,2))
f = function([], rv_u)
g = function([], rv_n, no_default_updates=True)
nearly_zeros = function([], rv_u + rv_u - 2 * rv_u)

In [4]:
# fはアップデートされるので毎回違う
f_val1 = f()
f_val1


Out[4]:
array([[ 0.12672381,  0.97091597],
       [ 0.13989098,  0.88754825]])

In [5]:
f_val2 = f()
f_val2


Out[5]:
array([[ 0.31971415,  0.47584377],
       [ 0.24129163,  0.42046081]])

In [6]:
# gはアップデートしないようにしているので毎回同じ
g_val1 = g()
g_val1


Out[6]:
array([[ 0.37328447, -0.65746672],
       [-0.36302373, -0.97484625]])

In [7]:
g_val2 = g()
g_val2


Out[7]:
array([[ 0.37328447, -0.65746672],
       [-0.36302373, -0.97484625]])

In [8]:
nearly_zeros()


Out[8]:
array([[ 0.,  0.],
       [ 0.,  0.]])

In [2]:
# numpy
# randn
import numpy
a = numpy.random
a.randn(2)


Out[2]:
array([ 0.13547117,  0.52158931])

In [26]:
# randint
# max, matrix shape
a.randint(5, size = (3,4))


Out[26]:
array([[0, 4, 2, 4],
       [4, 0, 0, 3],
       [4, 2, 2, 3]])

In [6]:
# こんなのあるよね
a = 20 > 9
a


Out[6]:
True

In [1]:
# example
# logistic regression
# 教師あり学習ってやつ
# まだ微妙にわかってないので、後で戻ってこよう

import numpy 
import theano
import theano.tensor as T
rng = numpy.random

N = 400
feats = 784
D = (rng.randn(N, feats), rng.randint(size = N, low = 0, high = 2))
# サンプル数400で、変数が784個ある(全てが標準正規分布に従って出力される)
# 各サンプルに対して結果変数として0,1のどちらかが報告されている
# この二つの情報をまとめたものがD(tuple)
training_steps = 10000

x = T.matrix("x") # 変数を入れる箱
y = T.vector("y") # 結果を入れる箱
w = theano.shared(rng.randn(feats))
b = theano.shared(0., name = "b") # bは定数項?

print("Initial Value:")
print(w.get_value())
print(b.get_value())

# wは係数
p_1 = 1 / (1 + T.exp(-T.dot(x, w) - b)) # dot is inner product
prediction = p_1 > 0.5 # 論理値として、p_1が0.5よりも大きいと1を出力する(振り分け)
xent = -y * T.log(p_1) - (1 - y) * T.log(1 - p_1) # 尤度関数の逆
# 下のcost functionはgenralized logistic regressionのコスト関数
cost = xent.mean() + 0.01 * (w ** 2).sum() 
gw, gb = T.grad(cost, [w,b]) # gradient descentをやるよ

# compile
train = theano.function(inputs = [x, y], outputs = [prediction, xent]
                       ,updates = ((w, w - 0.1 * gw), (b, b - 0.1 * gb))) # 0.1 is a step
predict = theano.function(inputs = [x], outputs = prediction)

# train
for i in range(training_steps):
    pred, err = train(D[0], D[1]) # pred とerrなんていないんだけど
    
print("Final model:") # 推定されたモデル
print(w.get_value())
print(b.get_value())
print("target values for D:") # 本当の結果
print(D[1])
print("prediction on D:") # 推測されたモデルに基づいて、与えられた変数の値を元に2項判別した結果
print(predict(D[0]))


Initial Value:
[ -1.61315041e-01  -6.61784179e-01   3.24272490e-01   1.97061432e-01
   9.78836431e-02   8.77386873e-01   9.79034116e-01   1.70020461e+00
  -6.10468327e-01   2.78172885e+00   1.16681592e+00   2.77971335e+00
   2.40265164e+00   8.38259382e-01  -8.10641231e-01   4.30013511e-01
  -8.45109439e-01   1.02578100e+00  -1.03961683e+00   1.13794689e+00
   2.65996544e-01  -1.55484002e+00  -7.47099820e-01   5.91907846e-01
   7.11044075e-01  -3.55631017e-01  -1.57548150e+00  -2.46551426e-01
   4.46848079e-02   1.58111444e+00  -2.81996891e-01   1.00521669e+00
   1.59985801e+00   1.81851610e+00   2.95760368e-01  -9.62497565e-01
  -1.10618939e+00  -1.94280530e+00  -1.42403471e+00  -2.11243725e+00
  -2.39338634e+00   1.50837387e+00  -1.58945210e+00  -1.62513512e+00
   1.63545747e-01  -1.92186746e+00  -1.21269377e+00  -7.74234387e-01
  -3.76340934e-01   9.18129607e-02   1.65239914e-01  -3.46922043e-01
  -8.31474769e-01   1.10287395e+00  -1.11492883e+00  -5.53481873e-02
  -7.76890521e-01   9.21562278e-01  -7.93201800e-02  -3.37118211e-01
   9.45166483e-01  -1.18995957e+00   1.68132952e+00  -9.70861465e-02
  -9.87002146e-01   7.65340477e-01   1.68333932e+00  -7.31489431e-01
  -2.61254154e-01   1.12126059e+00  -2.70250130e-01  -2.61381297e+00
  -7.83606905e-01   7.29726723e-01   5.55434411e-02   1.50988900e+00
   1.02871422e+00  -5.47809494e-01  -2.17345249e+00  -6.22678880e-01
  -1.44018269e+00   1.47216107e-01  -1.08369637e+00   9.32507059e-01
   6.48676598e-02   1.09851220e+00   1.66811636e+00  -2.18716833e-01
   6.58331615e-01   5.27805791e-01  -4.89904658e-01  -2.00902340e+00
  -7.90057798e-01   7.21736712e-01   3.01132816e-01   3.44678906e-01
  -1.01433998e+00  -1.86400570e+00   8.58053713e-01   9.03301433e-01
  -3.23526098e-01  -6.77301573e-01   4.80541906e-01   1.09112054e-02
   1.34845733e+00  -5.23677362e-01   7.79188609e-01   3.92348703e-01
  -7.54508237e-01  -7.43322076e-01  -3.63684147e-01   6.62269470e-01
   1.01184226e+00   8.20096974e-02   1.26543707e+00   1.40390626e+00
   7.35679252e-01  -3.71345704e-01  -1.11856465e+00   7.23831348e-01
   7.31707378e-01  -8.31528290e-01  -8.34346139e-01  -5.96782469e-01
  -5.71482409e-02  -2.84322269e-01  -6.86847149e-01  -1.43787618e+00
  -3.31837008e-01   4.28102429e-01  -6.11668700e-01   2.16434120e-01
   1.65493821e-01  -9.77839165e-01   1.81181208e+00  -4.68075690e-01
  -1.80290570e-01   8.20422519e-01   1.19269640e-01   8.86055703e-01
   1.85253627e+00   9.57604867e-01   1.19246465e-01   1.40889871e+00
   9.63756311e-01  -1.47229319e+00   6.74835369e-01   1.54263045e-01
   1.46908050e+00   2.78549004e+00   1.78101688e+00  -3.60957615e-01
  -1.10989301e+00  -1.04741798e+00  -6.32882518e-01   1.08925612e+00
   2.16149251e-01  -9.10761146e-02   6.13576016e-01   4.85562801e-01
   4.39771525e-01   6.51829834e-02   2.52687435e-02   7.36140909e-01
  -5.30428879e-01   1.75126421e-01  -6.78080075e-01   7.98610358e-01
  -7.72871935e-01  -9.78720584e-01  -3.00279946e-01   2.06935846e+00
   1.31770387e-01   1.36377850e+00  -6.67504488e-01   4.94095453e-01
   3.80818594e-01  -2.06154190e+00  -1.03298416e-01  -2.26669816e+00
  -8.21410979e-01  -3.31966910e-01  -1.83979701e-01  -1.90937302e-01
   3.74192477e-01  -6.29727825e-01  -3.02704366e-01  -1.57486724e+00
  -2.48547857e+00  -9.54035984e-01   6.90460120e-01   1.93254371e-01
   4.49485695e-01   4.69978053e-01   9.38059284e-01  -4.18088893e-01
   1.11571837e+00  -7.08258079e-01   9.78243539e-01  -1.64886178e+00
  -6.93033446e-01  -1.21132718e+00   7.13761837e-01  -1.36336156e-01
   3.19116934e-01   1.33437504e+00   1.05412122e-01  -3.21849428e-01
   4.81495848e-01  -7.01857591e-01  -4.84683875e-03  -7.77964210e-01
  -1.67670655e-01  -4.35380258e-01   1.14258461e+00  -1.04020054e+00
  -1.08945686e+00  -1.38308955e+00   4.61878772e-01   4.27484856e-01
  -6.34827063e-02   8.11795622e-01   1.89108419e+00  -7.87864850e-01
  -9.21000414e-02  -1.30224737e+00   6.23944771e-01  -4.36201030e-01
   8.87689941e-02  -2.23517374e-01  -1.42320451e+00   1.06959277e-01
  -9.73699242e-01  -2.29658360e+00   7.91560662e-01  -6.89287563e-02
  -2.34273665e+00  -2.61903538e+00  -1.83774344e+00  -2.90715432e-01
   4.65309376e-01   6.11212824e-02  -4.35388723e-01  -3.83760455e-01
   5.40999437e-01   3.19247884e-01   7.64385993e-01   2.48205679e-01
   3.78471055e-01   3.53906458e-01  -1.48958072e-01  -1.08361251e-02
   2.54406823e-01   4.41426181e-02   7.38545180e-01   8.61334576e-01
  -1.00797900e+00   5.58823758e-01   3.59827991e-01   1.53598284e+00
   2.31949810e-01  -1.21149145e+00   1.86051256e+00   2.43534980e-01
   5.39677493e-01  -5.94631304e-01   2.49704989e-01   1.28070570e-01
  -4.55059053e-01   1.92697281e+00   1.22203905e+00   8.98168570e-01
   6.12787322e-01  -1.80357560e+00   1.29516350e-01   1.43252296e+00
  -1.27693386e+00  -8.64955453e-01   3.55176713e-01  -5.63345145e-02
   2.79845887e-01  -1.65296349e+00  -1.39312151e+00   5.64384096e-01
   1.17261130e+00   1.03869154e+00  -1.44100463e+00   6.50544729e-01
  -1.00477779e+00   3.83906630e-01  -7.48480792e-01  -4.12728358e-01
  -1.58007135e+00   2.80263574e-01   1.74859375e+00  -6.69505998e-01
   9.84838172e-01   2.73078331e+00  -1.61372684e-01   3.74340705e-01
   7.99401376e-01   6.74913443e-01  -9.51008045e-01   1.31872638e-01
  -2.18981683e-01   5.43797056e-01  -7.27495165e-01   8.44000292e-01
  -8.08397152e-01   7.29078238e-01  -2.13040455e+00  -7.09865571e-01
  -7.62382396e-02   1.55266881e+00  -2.89938576e-01  -2.85182718e-01
   1.77031452e+00  -4.94163736e-01  -1.01779224e+00  -2.14742797e-01
  -4.43573272e-02  -3.26273946e-01  -6.03708527e-01   8.45798767e-01
  -2.28716598e-01  -9.36887340e-02  -3.14850206e-02  -9.88231627e-01
  -4.39132167e-01   6.70590533e-01  -5.35139867e-01  -8.52275789e-01
   9.12434926e-01   1.80026939e+00   4.35378743e-02   1.38020930e-02
   6.23725335e-01   8.85591893e-01   1.56674479e+00   4.67896758e-01
   1.63944643e+00   6.02528192e-01   1.39420495e-01  -3.50626066e-02
   1.38028050e+00  -1.54781526e+00  -2.28786881e-01  -9.47930522e-01
  -4.23927195e-01  -3.72275404e-01   1.26717814e-02  -1.18967799e+00
  -1.31650945e-01   7.24340334e-01  -8.24296655e-01  -7.47251905e-01
  -1.30876173e+00  -1.72971535e-01   1.29065453e+00   1.00700577e+00
   3.34516659e-01   1.39868584e+00   1.58088065e+00  -1.92723121e-01
   1.87797392e+00   1.78749400e+00  -5.79783219e-01   4.22064328e-02
  -1.04857098e+00  -9.55709313e-03   2.31606963e-02  -2.93013904e-01
  -7.68368531e-01   4.18727965e-01   1.09417133e+00  -5.12079904e-01
   1.35191137e+00   5.72330679e-01  -1.00783085e+00   2.65852411e-02
   7.79998639e-01   1.94209782e-01   1.02242146e+00  -1.34647982e+00
  -2.87057273e-01  -6.23549690e-01  -2.34393413e+00   7.92203117e-01
   3.01267091e-01  -8.41646356e-03   2.59114451e+00  -9.51007239e-01
  -6.13664419e-01   1.41288190e+00  -4.26389555e-01  -6.89463567e-01
  -5.36588488e-01   7.82189272e-01  -7.79246135e-01  -5.71761041e-01
   4.56123367e-01  -1.11433735e+00  -4.66727412e-01   8.94040287e-02
   1.07775610e+00   2.04657345e+00   2.13235771e+00   2.02301479e-01
  -4.34480371e-01   3.71517589e-01  -7.50110803e-01  -1.88624197e-01
   1.69674552e+00   4.79633505e-01   5.80352723e-02   6.11495601e-01
   2.19112511e-01  -2.60552977e-01  -3.65108047e-01  -1.30647281e+00
  -1.29382697e+00   6.23153894e-01   5.86240585e-01   2.94107174e-01
  -1.14484169e+00  -1.23458522e-02   2.33983256e+00   4.21048796e-01
  -1.55620653e-02  -1.32653205e+00   1.89868337e+00  -1.24423985e-01
  -5.80779723e-01  -1.55092493e+00   1.64559723e-01  -3.16013594e-01
  -4.19160240e-01   3.13379951e-01   7.00445189e-01   2.20892084e+00
  -3.58522569e-01   1.29720290e-01   9.91088939e-01  -1.62500924e+00
   2.90012082e-01   3.93902135e-01  -1.26352782e+00  -8.30034734e-01
   1.13462515e+00  -2.72451911e-01   9.27507557e-02  -1.10354863e+00
  -4.59680391e-01  -7.07306327e-01  -1.91637492e+00  -4.04544476e-02
   9.08500972e-01  -8.90799492e-01  -4.76840060e-01  -7.03699888e-01
   1.69410679e+00   1.11408326e-01   3.51163667e-01  -1.50080579e+00
  -4.89889223e-01  -8.19044010e-02  -1.34902014e-01   4.79369969e-01
   8.92805588e-01   5.20243311e-02   2.04211638e+00   6.81550007e-01
  -2.36958735e-02   2.67645666e-01   5.40971884e-02   4.64999801e-01
   8.89710124e-01  -1.67503379e-02  -3.48217256e-01   1.54842042e+00
   1.51076560e+00   1.14708381e+00   7.45507126e-01  -3.26086679e-01
  -4.96089613e-01  -3.52725086e-04  -1.13477638e-01   8.31741029e-01
  -5.72698889e-01   4.82489932e-01  -3.92393014e-01  -1.04462015e+00
   9.21741168e-01   5.43481997e-01  -1.48092186e+00  -1.22279088e+00
   1.93845813e+00   4.11620415e-01   1.20250122e+00  -5.67156309e-01
   3.40979660e-01  -2.47622324e+00  -3.86581574e-01  -1.14652357e-01
  -3.05754836e-01  -6.86464142e-01   2.59268620e-01   4.89739901e-01
   2.06577400e+00  -6.10212028e-01   1.08517090e+00   2.51346535e-01
   8.66753784e-01   2.40132555e+00   1.49823634e+00  -1.26141848e+00
   1.67988186e+00   2.15111934e+00  -9.51204330e-01  -2.23097647e+00
   8.28557332e-01  -1.91480966e-01   1.09921780e+00   3.81967010e-01
   6.41563816e-01   5.28177890e-01   9.43348792e-01   8.43639102e-01
  -1.12942707e+00   1.20083392e-01  -1.12621686e+00   1.62725134e+00
   1.38498546e-01   6.99566359e-01   7.68245694e-01  -1.22752033e+00
  -4.83135471e-01  -9.43468882e-01  -4.06821127e-01  -1.15150582e+00
  -1.04571307e+00  -1.11307129e+00   3.02227386e-01   1.05696115e+00
   5.89761008e-01   5.09739357e-01   1.37670831e+00  -1.66094367e+00
   3.50249349e-01  -4.67977117e-02  -6.44866906e-02  -3.22936161e-01
   3.17554860e-01   8.63214567e-01  -2.04410311e+00  -3.35938450e-01
  -1.76436831e+00   8.30486234e-02   4.79996218e-01   1.96664791e+00
   1.76880017e+00   2.09078822e-01  -1.27289879e+00   1.20555724e+00
  -3.17825473e-01  -5.61487306e-01  -1.83699106e+00   6.55517761e-01
   3.40545796e-01  -1.36854126e+00   4.57244878e-01   1.47235342e+00
  -8.72072818e-01  -1.06576649e+00   1.31729732e+00   8.96499471e-01
   7.17923054e-01  -9.89246883e-01  -2.11126387e-01  -1.16172181e+00
   3.55066561e-01   5.89249797e-01   5.99795001e-02  -2.31257122e+00
  -8.51897867e-01   7.80047656e-01   1.07096207e+00   5.00187709e-01
   4.48595548e-01  -1.04381119e+00   7.60541040e-01  -1.39228837e+00
   5.01789952e-01   1.90564658e+00   2.23962987e-01  -2.01130082e-01
   1.96233917e+00   1.20039416e+00   3.17890163e-01  -1.05310699e-02
   6.67982930e-01   1.58876813e+00   6.37560394e-01  -6.97185581e-01
  -1.12052669e+00   1.76088209e+00   8.87028846e-02   1.70695561e-01
  -8.07717972e-01  -2.68152317e-01   3.46586313e-01  -1.98695651e+00
   1.30420123e+00   1.08630093e-02   9.06917164e-01  -1.45043623e-02
  -5.51166854e-01   4.46187213e-01  -4.50006265e-02  -4.63464265e-01
   5.25843840e-01   1.32751366e+00   1.98429713e+00  -5.09857326e-01
  -4.95052082e-01  -1.31826640e+00  -2.15519573e-01  -1.28060172e+00
   1.52995676e-02  -5.35050342e-01   2.81931885e+00   1.01225424e+00
   4.33009365e-01  -6.38907637e-01   1.02111183e+00  -1.54073984e+00
   2.68218961e-01  -1.03716392e+00   2.32373057e+00   5.53889112e-01
   9.33935693e-01   8.68022111e-01  -2.08295730e+00   6.92723076e-01
  -8.61202379e-01  -6.82586067e-01   9.79893454e-01   8.43454555e-01
   5.87266115e-01  -1.84258041e+00   4.09561779e-01   2.82551992e-01
  -9.15292150e-02  -1.66703553e-01  -3.46629170e-01   1.47709923e+00
  -5.86374744e-01   1.24381087e+00  -2.21668806e-01  -7.40264116e-01
   3.21295095e-01   5.11363305e-01   3.08429653e-01  -1.48469151e+00
  -6.20162392e-01  -1.11461926e+00  -4.98218835e-01   1.80752375e+00
  -4.02217812e-01   6.42636142e-01  -8.40899556e-01   9.46044216e-01
   5.68908166e-01   3.06802846e-01   6.82515473e-01   8.75570269e-01
  -3.60524016e-01  -1.85994083e-02   1.21101403e+00  -1.33025365e-01
   8.29213062e-01  -9.18561456e-01  -2.15660899e+00   1.39612736e+00
  -4.64517481e-01   1.19023924e+00   2.14861370e+00   1.00862012e+00
   1.38911838e-01  -8.98440429e-01   5.44975155e-01  -5.96632037e-01
   5.28430961e-02  -3.26875841e-01   5.34847276e-03   2.34063885e-01
   1.22100485e+00  -4.39017845e-01  -1.94479403e+00   7.92791254e-01
   3.88399540e-01   9.33699029e-01  -6.41486180e-01  -1.28379454e+00
   3.20580406e-01  -1.24956708e-01   1.72401014e+00  -6.51226827e-01
   1.96608182e-01   4.17690842e-02   1.46071006e+00   3.85634264e-02
  -1.70329677e+00   1.30941071e+00  -2.35961635e-01  -2.20880917e-01
  -3.02483555e-01   1.47651120e+00  -3.26964286e-01   7.51675331e-01
  -8.63882084e-01  -1.45228137e+00   1.51675248e+00  -2.81756869e-01
   1.45537117e+00   1.53888176e-01  -7.89457820e-01  -3.06533571e-01
   2.05640439e-01  -1.70065706e-01   8.19699352e-03   7.38729053e-01
  -7.61354128e-01   1.50732013e-01   3.64823326e-01  -5.01329096e-01
   1.02035967e-01  -1.33504199e+00  -8.73142644e-01  -8.75142645e-01
   1.46653718e+00   1.06223587e+00  -3.13890570e-01  -8.73019599e-01
  -7.29117822e-01   6.10876803e-01   3.58712899e-01   1.22453051e+00
   1.43265396e+00   5.31607763e-01  -2.55965569e-01  -1.43398961e-01
   4.40751942e-01  -6.59738726e-01   2.02467771e-03   7.78978985e-01
  -1.38673088e+00  -3.60220076e-01  -4.86473171e-01   2.33623281e+00
  -7.59467524e-01   3.16886862e-01  -1.18428081e+00  -2.83221311e-01
  -1.44126401e+00  -9.21306521e-01  -1.34194966e+00  -9.81814697e-02
  -6.67366884e-01   2.03225566e+00   1.50126558e+00  -2.25727817e-01
  -1.79411977e+00  -1.09117529e+00   7.16118976e-01   2.08986838e-02
  -6.43301223e-01  -2.09055689e+00   9.26382510e-02   9.13327580e-01
   1.32860439e-01   1.79453314e-01  -1.55308143e-01   3.45090850e+00]
0.0
Final model:
[ -1.85226253e-01  -1.48052395e-02   1.29947602e-01   2.09269740e-03
  -1.74657905e-01  -1.61689291e-02   3.52714585e-02   3.11681891e-02
   8.76833936e-02   1.09780931e-01   2.36118783e-03   2.05917620e-01
  -2.84470109e-02   2.58704008e-02  -2.14771613e-02   4.87853162e-02
   9.11304239e-02   9.86610941e-02  -6.60685485e-03   6.85484844e-02
   5.71533283e-02   3.51718105e-02  -8.83093221e-02  -3.32171871e-02
   5.00264578e-02  -1.43311736e-01  -1.16164740e-01  -5.10912597e-02
  -1.18716107e-01   4.74897069e-02   1.38713944e-01   3.29544012e-02
  -5.32233181e-02  -1.26047333e-02  -2.63276253e-02  -2.66782810e-02
   8.86811437e-02   1.36140206e-01   1.82583300e-01  -1.56245475e-02
   8.48016858e-03  -1.49440074e-01  -1.63456835e-01   1.16081813e-01
  -1.28272819e-01  -4.42507218e-02   2.55671577e-02  -4.47801728e-02
   1.33650394e-01   8.47294978e-02  -1.91313315e-01   1.43149766e-03
  -5.33382835e-02   8.19082681e-02   1.41041762e-01   1.16680393e-01
   5.94731740e-02   1.12092316e-01   2.50368861e-03   4.52810048e-02
   9.96520482e-02  -8.32218884e-02  -1.19225582e-01   2.26192292e-01
   1.30232597e-01  -5.93202236e-02  -1.78466811e-02  -1.50342585e-02
  -6.66133416e-02   2.96019955e-02   6.42442430e-02   1.32087542e-01
  -5.73695516e-02   2.63446531e-01   4.66686035e-02   4.96547785e-02
   2.46243201e-02  -5.36599450e-02   3.59765328e-02   1.33090544e-04
  -3.44407814e-02  -1.63191924e-02   6.01934867e-02   1.36297193e-01
   4.39889422e-03   3.14926815e-02   2.57405758e-02  -2.84610193e-02
   3.97441365e-02  -6.83602882e-02  -8.58433884e-02   1.32445809e-01
   4.61443378e-02   6.23771207e-02   6.33882535e-02  -1.79875721e-02
  -1.35512644e-01  -3.21770576e-03   1.22217929e-01   3.72934026e-02
   1.27839032e-03   2.16268218e-02  -1.11904289e-01  -6.80960711e-02
  -1.88411021e-03  -1.78388452e-02  -1.20571972e-02  -8.17525756e-03
   2.22448863e-02  -6.79996054e-02   1.06686847e-01   7.82641774e-02
   1.30371933e-01   6.37819502e-02   1.96076174e-02  -1.55659073e-02
   9.15347337e-02   1.00273864e-01  -4.67291438e-02  -2.13448559e-02
  -9.85286655e-02  -3.91439217e-02   9.50277302e-02  -9.46178133e-02
   9.25650774e-02  -1.29433016e-01  -6.67905188e-02  -1.93269955e-01
   9.86355333e-03   1.56079693e-01  -7.51211488e-02   1.08981383e-02
   3.44074687e-02   4.03431292e-02  -9.77164849e-03   2.84820592e-02
   1.38790628e-01   1.07014027e-01   3.99874927e-02   1.52556967e-02
  -1.23061333e-01   2.97880985e-02   5.49534139e-02   2.53160909e-02
  -5.22966816e-02   1.03721356e-01   8.21084026e-02  -1.01287238e-01
   1.27102065e-01   2.17032432e-02   4.14467788e-02  -4.27174781e-02
   3.35544798e-02  -4.40745363e-02   1.51096151e-02  -5.85154688e-02
  -4.79475995e-02  -7.16246098e-02  -1.41509473e-01  -1.99633597e-03
   1.34571508e-01  -1.15390436e-02  -6.03906727e-02   8.12725418e-02
  -5.92718568e-02   5.94096317e-02  -8.91047130e-02  -2.82364700e-02
  -1.50170585e-01   4.43349829e-02   4.52622783e-02  -8.66163508e-02
   1.78221373e-01  -8.65027309e-02  -1.13689208e-02   1.17349849e-01
   1.85607596e-02  -5.92438895e-02   6.18051116e-02   1.59227896e-02
  -1.32171101e-02   1.49421736e-01  -2.34468945e-01   7.86437619e-02
  -7.06332135e-02  -2.17540941e-02   1.50791365e-02   8.05867321e-02
   7.84735349e-02  -1.49000466e-02   5.83371871e-02  -9.72561248e-02
  -1.51790073e-01   3.75266178e-02   1.82788484e-03   1.02085618e-01
  -1.04401188e-01  -6.65795946e-02  -3.15478201e-02  -1.77334237e-01
   9.08653033e-02  -7.41014598e-02  -1.77708567e-01   1.10183441e-01
   2.93836341e-02   1.02301689e-02   6.78290366e-02   1.37178809e-02
  -1.66288003e-01  -6.39111652e-02   1.20978166e-01  -5.97479690e-02
   2.48075846e-01   5.57667804e-02   1.02218617e-02   1.26741898e-01
   7.25733091e-02   1.57797836e-01  -3.96366797e-02   1.95297934e-01
  -1.93178240e-01   6.01369656e-02   3.54670232e-02   1.33602125e-01
   3.48370278e-02   2.47243575e-02  -6.06685371e-02  -5.71697697e-02
  -2.60026999e-01   1.09705678e-01  -2.52467114e-02   9.53913313e-02
  -4.78228135e-02  -7.97572160e-02   8.06388476e-02   5.17303912e-02
  -2.49904068e-02   1.14181939e-01   3.71397915e-03  -3.90130135e-02
  -6.70874459e-02   4.63348876e-02   1.53630692e-01  -9.35248146e-04
   1.53420379e-01  -9.55807003e-02  -1.08370756e-01  -5.44566090e-02
   2.11823972e-01  -5.74559744e-02  -3.97404702e-02   6.47835862e-02
   3.87490397e-02   1.79490544e-01  -9.53317366e-02   8.55179345e-02
   4.07369778e-02  -9.46667056e-03   2.73636886e-04  -8.81804620e-02
  -6.88839720e-02   6.92126642e-02  -1.11066585e-01   7.86445985e-03
  -8.34177613e-02   2.17044553e-01  -4.66671991e-02  -7.84088740e-02
  -3.77600534e-02  -1.76194818e-01  -2.64820736e-02  -1.34049318e-01
  -1.59937791e-02   3.36695409e-02   4.63831872e-03  -1.25146613e-01
  -8.40384803e-02  -1.26995467e-01   6.64724386e-02  -1.04880796e-01
  -7.82297068e-02  -7.27349901e-02  -1.20843143e-04  -2.43034896e-02
  -1.01638330e-01  -1.33384952e-01   6.63847791e-02   7.53002653e-02
   6.41692156e-02  -1.06376138e-02  -1.63777215e-02  -8.35080230e-02
  -5.52667869e-02   2.33610107e-03  -4.49585157e-03   2.11032863e-02
   5.98211416e-02  -8.70704918e-02  -2.98229873e-02  -1.54156974e-01
   3.70213762e-02  -7.12396452e-02   2.72795298e-01  -4.87386930e-02
   4.07456069e-02   3.87667531e-02  -3.94615394e-02   1.39268692e-01
   1.27067720e-01  -3.18470467e-03   3.12328364e-03   6.94612252e-02
   1.72862650e-01   2.77253580e-02   5.44973175e-02   1.58937458e-01
   5.79120218e-02   9.38037400e-02  -5.76930633e-02   1.21964702e-01
  -4.09623318e-02   1.68753050e-01   4.86625108e-02   1.42415432e-01
  -2.28849226e-02   3.50159780e-02  -6.20455386e-02   1.05217794e-01
   4.02064297e-02  -5.36993541e-02  -1.51108287e-01  -3.07184072e-02
  -3.17972643e-02   1.70575832e-01   1.36180931e-01  -1.78322758e-02
   9.79078218e-03  -5.97029286e-02  -5.51101006e-02   8.77475787e-02
   1.38973406e-01   1.45402482e-01   1.46852962e-01   3.21087392e-02
  -1.20597700e-01  -1.18056816e-01  -9.12065379e-02  -8.11958530e-03
   1.88849073e-01  -9.38923950e-02   6.29863928e-02  -1.37457271e-02
   2.37752149e-01   4.60402958e-02   2.09864076e-01  -8.33399935e-02
   1.84140743e-02   6.93864699e-02  -5.00822346e-02  -7.89991804e-02
  -1.19259837e-01  -1.19136298e-01   1.42743711e-02  -1.40644136e-01
   7.32756129e-02  -4.62036594e-02   1.57282189e-01   2.19664535e-01
   1.19180546e-01   1.32317888e-01  -4.52244275e-02  -9.68639037e-02
   1.35151974e-01   5.02127328e-02   1.14486642e-01  -1.30172177e-01
  -1.93632485e-01  -4.70928172e-02   5.84772857e-02   4.08331431e-02
   8.63147970e-02  -2.76681886e-02   1.08068338e-02   8.43027401e-03
  -1.23264188e-01  -4.34093229e-02  -7.81114558e-02  -5.42410040e-02
  -8.33087350e-02  -6.57531487e-02  -2.96779896e-02   5.89496567e-02
   1.46999196e-01   1.65036372e-01  -1.05771686e-01   2.39690502e-01
   2.23352466e-02  -5.85943349e-03   3.91217021e-03   2.01070670e-02
   3.39504192e-02   7.28601625e-02   5.08744733e-02  -2.16219482e-01
   1.23088203e-02  -1.27058989e-02   1.44553971e-01  -3.74856854e-02
   1.33531577e-01  -8.82373591e-02  -1.39653292e-01   1.74383098e-01
  -1.63933876e-01   8.60397214e-02   2.23793673e-03  -5.14984945e-02
  -2.20115589e-02  -1.24580249e-01  -5.58317536e-02  -3.34695337e-02
  -2.40839340e-02  -6.43998647e-02  -4.06129477e-02   4.47144475e-02
  -6.91770453e-02  -1.83369784e-01  -1.85427168e-02   5.45294340e-02
  -7.70263566e-02  -1.18427434e-02  -7.03955980e-02  -5.04795648e-02
  -1.04490339e-01  -5.94948411e-02   1.22658681e-01  -3.89910709e-02
   8.36129860e-03   2.56393074e-02   1.36653570e-01  -5.88690142e-02
   6.41384984e-03   4.84820943e-02   2.51197785e-02  -7.65703622e-02
  -1.71856639e-02   9.42334033e-02   5.19712984e-03  -1.23314174e-01
  -9.16994070e-02  -5.86864521e-02  -1.19879181e-01  -6.39879716e-02
  -9.89923770e-02  -2.08474627e-02  -1.33470493e-01  -4.03307234e-03
  -2.53940581e-02  -6.49930069e-02   2.98712767e-02  -8.38845473e-03
  -1.38424347e-01   9.52054848e-02  -3.14888154e-02   8.54256020e-03
   1.23864381e-02   8.73500539e-03  -1.80872090e-01   6.11978982e-02
  -7.44548723e-02  -1.49577245e-01   1.44672875e-01   8.56047668e-02
   5.97970720e-02  -1.41152301e-01  -1.67588645e-01   8.70086154e-02
  -2.20726258e-02  -6.70117110e-02  -7.70098188e-02  -8.27169594e-02
   6.63958884e-02  -1.54524835e-01   3.94323116e-02   1.06616306e-01
   1.16855998e-01   6.58784983e-02  -1.07237234e-02  -1.63029897e-01
  -4.82483728e-02   4.41581531e-02  -2.63364896e-02   1.37291725e-01
  -1.09946757e-01   1.05595994e-02  -7.83189312e-02   2.17670863e-02
   1.25208014e-01   1.66072651e-01   4.14029121e-02   1.02321492e-01
  -1.36862307e-01   6.72446700e-03   1.53085767e-01  -2.30967144e-02
  -2.20255217e-01  -2.60896613e-03   1.46080782e-01  -4.68837346e-02
  -7.56975660e-02  -6.74003428e-02  -6.00801077e-02  -3.74860661e-03
   2.27396283e-01  -1.55684838e-01  -1.80065749e-01   2.23456677e-02
   1.53233756e-01   8.27595945e-03   1.81054589e-01   4.28936119e-02
  -4.26262735e-03  -1.45211358e-01   1.14805170e-02  -1.14737314e-02
   4.58557766e-02   4.89714342e-02   3.22981612e-02   3.04522140e-02
   7.37352259e-02  -1.15184755e-01   1.38657071e-02  -1.39215191e-01
   2.15806834e-01  -8.27123895e-02  -8.15777815e-03   9.63846036e-02
  -4.53275731e-02   1.84095319e-03   1.32181007e-01   8.62402943e-02
   4.85425270e-02   1.01343350e-01   1.39594607e-01  -8.78599477e-02
   7.17072499e-03   1.06980163e-01   2.22825934e-01  -1.37812017e-01
  -4.14849892e-03   3.76718458e-02   1.70514119e-02   9.49359786e-02
  -2.89233331e-02   9.32771075e-03   2.11746623e-02   1.53520088e-02
   1.01357775e-01  -1.37340494e-01  -6.23900794e-02  -2.77769334e-02
   5.92409077e-02   2.90872880e-02  -6.65232867e-02  -2.23075086e-02
  -1.69826465e-01  -1.15956046e-01   9.34661299e-02  -5.78073770e-02
   5.77170954e-02  -3.78387521e-02   4.15497692e-02   7.23199384e-02
  -1.99772106e-01  -1.75328725e-01  -1.13268276e-02  -1.09746713e-01
  -2.89723569e-02  -6.25211827e-03   1.31089526e-01  -4.70845385e-02
  -2.02829783e-01  -2.85131770e-02  -1.06413721e-01   4.31439933e-02
  -3.07556209e-02  -1.04746989e-01  -1.33092219e-01   3.60210605e-02
   7.02428956e-02   1.95194837e-01   2.76435976e-02  -1.82916135e-02
   3.22368919e-02   4.82545335e-02  -4.56224616e-02  -6.15254574e-03
   1.54374840e-01  -2.38115194e-01  -1.39646238e-02  -1.87419642e-01
   6.99715686e-02  -6.46963736e-02   3.29782204e-02  -2.60578988e-03
   3.27815071e-02  -9.01600181e-02   3.79319000e-02  -5.47480551e-02
  -1.95467597e-01  -1.12254503e-01   8.78660058e-03  -7.38633815e-02
  -2.02904567e-02  -3.95618376e-02  -2.69116325e-02   3.51761031e-02
   2.88534455e-02  -3.48683541e-02  -1.37253994e-01   1.09320265e-01
   9.94554591e-02   1.64435245e-01  -1.06105087e-01   1.04245856e-01
   2.34375113e-02   1.74871327e-01  -2.39765063e-02  -1.47894541e-01
   7.10801779e-02  -1.85159368e-02  -1.62039477e-01  -2.91716769e-02
  -1.35583854e-01   1.40689648e-02  -1.88079805e-01  -4.99877796e-02
   2.41579182e-02  -1.05726450e-01   9.58344574e-02  -1.90584805e-01
  -1.95621932e-01   3.91738275e-02  -1.01916797e-02   8.09838518e-02
  -4.12912176e-02   9.71191294e-02  -4.87674815e-02   5.70874931e-03
   8.23425286e-02  -1.18676554e-01   1.76957554e-02   3.62631906e-03
   1.71124464e-01   2.91939399e-04   1.20089075e-01   5.71762474e-02
   1.43321100e-02  -9.88452110e-02  -4.95790447e-02   2.86049953e-02
  -2.59982160e-03  -1.73517737e-02   1.00703307e-01   1.64668411e-01
  -1.28065288e-01  -1.09086139e-02   4.16277309e-02   8.11921289e-02
  -3.84871833e-02  -9.99312129e-03   5.24309113e-02   2.62749568e-02
   4.44889968e-03   1.06656255e-01   6.99675085e-02  -6.02569779e-02
  -7.93445444e-02   1.84898139e-01  -6.82611215e-02   1.04839462e-01
  -1.11836887e-01  -4.59965197e-02  -6.61519090e-02   1.18982929e-01
   2.99851235e-01   2.54842593e-02   4.06865628e-03  -9.53441816e-02
  -5.24882729e-03  -9.03730762e-02   6.60912869e-03   1.10246634e-01
  -5.69561654e-02   4.04402235e-02  -1.61955867e-02  -1.65957513e-01
   4.44838923e-02   1.09639233e-01   7.50522540e-02  -3.27562278e-02
   2.14143010e-01  -1.37932862e-01  -1.07865486e-01   1.16427687e-01
   1.05630158e-01  -4.43026994e-02   7.97707334e-02   7.83597118e-02
  -7.54962854e-03  -1.42396013e-01  -5.79100140e-02  -7.93199829e-02
   1.35314463e-01  -1.33802127e-01  -8.82510949e-02  -7.25805558e-02
  -9.26321823e-02  -4.92882907e-02   4.96162220e-02   3.62046003e-02
   1.90125643e-01  -2.52826776e-01   8.92759319e-02  -6.09163498e-04
   7.27639477e-02  -1.66779597e-01   3.92519731e-02  -8.52200584e-02
  -3.58067854e-02  -9.27007607e-02  -1.15755672e-02  -6.82544798e-02
   4.67127303e-02  -1.06796185e-01  -4.00015425e-02  -1.34904520e-01
   5.64724010e-02   1.99270679e-01  -4.54449767e-02   1.32383151e-01
   3.38046507e-02  -1.23191937e-01   7.89592453e-02   9.36232412e-02
  -6.79645976e-04   4.42943711e-02  -5.64172035e-02  -1.85878875e-01
   1.10168754e-01  -4.14305790e-02   4.34386470e-02   9.62738150e-02
   1.41875647e-02   4.17538186e-02   6.09635659e-03  -8.50823911e-02
  -3.18136716e-02  -3.49344430e-02   2.39907461e-01   1.28179268e-03
   7.96862079e-02   5.87505431e-02  -5.99104086e-02   1.04822756e-02
   1.30354747e-02   1.12514830e-03   6.98045610e-02   1.10244019e-01
   7.09453482e-02   2.63556419e-02   3.04526823e-02  -1.62289859e-02
  -6.57110549e-02   1.03117092e-01  -7.16772784e-02   1.00079216e-01
   9.42426251e-02   3.70494121e-02  -1.19332493e-02  -2.83673551e-02
   8.26647095e-02  -3.92548577e-02   3.52087610e-02   3.52856047e-02]
0.201484187211
target values for D:
[0 0 0 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1
 1 1 1 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 1 1 0 1 1 1 1
 1 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 1 0 1 1 1
 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 1 0 0 1 0
 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 1 1 1 0 0 1 0 0 0 1 1 0 1 0 0 1 0
 0 1 1 1 1 1 0 1 1 0 1 0 0 1 1 0 1 0 1 0 0 1 1 1 1 0 1 1 1 0 0 0 1 1 0 1 0
 1 1 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0
 0 0 1 0 0 0 1 0 1 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 0 0 0 0
 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 1
 0 0 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1
 1 1 1 1 1 1 1 1 0 1 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 0 1 0]
prediction on D:
[0 0 0 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1
 1 1 1 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 1 1 0 1 1 1 1
 1 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 1 0 1 1 1
 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 1 0 0 1 0
 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 1 1 1 0 0 1 0 0 0 1 1 0 1 0 0 1 0
 0 1 1 1 1 1 0 1 1 0 1 0 0 1 1 0 1 0 1 0 0 1 1 1 1 0 1 1 1 0 0 0 1 1 0 1 0
 1 1 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0
 0 0 1 0 0 0 1 0 1 1 1 1 1 0 1 1 0 1 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 0 0 0 0
 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 1
 0 0 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1
 1 1 1 1 1 1 1 1 0 1 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 0 1 0]

In [30]:
len(D[1])


Out[30]:
400

In [ ]: