Mercurial > hg > tvii
annotate tvii/logistic_regression.py @ 16:b95fe82ac9ce
more notes to self
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Sun, 03 Sep 2017 13:17:33 -0700 |
parents | 8cb116d63a78 |
children | 3713c6733990 |
rev | line source |
---|---|
2
1214c127fe43
steps towards logistic regression
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
1 """ |
1214c127fe43
steps towards logistic regression
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
2 z = w'x + b |
1214c127fe43
steps towards logistic regression
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
3 a = sigmoid(z) |
1214c127fe43
steps towards logistic regression
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
4 L(a,y) = -(y*log(a) + (1-y)*log(1-a)) |
11
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
5 |
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
6 [| | | ] |
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
7 X = [x1 x2 x3] |
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
8 [| | | ] |
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
9 |
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
10 [z1 z2 z3 .. zm] = w'*X + [b b b b ] = [w'*x1+b + w'*x2+b ...] |
2
1214c127fe43
steps towards logistic regression
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
11 """ |
11
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
12 |
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
13 |
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
14 import numpy as np |
16 | 15 from .sigmoid import sigmoid |
16 | |
17 def cost_function(_): | |
18 """ | |
19 Cost function for binary classification | |
20 yhat = sigmoid(W.T*x + b) | |
21 interpret yhat thhe probably that y=1 | |
22 | |
23 Loss function: | |
24 y log(yhat) + (1- {UNFINISHED}) | |
25 """ | |
26 raise NotImplementedError('TODO') | |
11
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
27 |
12 | 28 def logistic_regression(_): |
29 """the slow way""" | |
13 | 30 J = 0 |
31 dw1 =0 | |
32 dw2=0 | |
33 db=0 | |
12 | 34 |
11
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
35 def logistic_regression(nx): |
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
36 dw = np.zeros(nx) |
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
37 # TODO |
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
38 # z = np.dot(wT, x) + b # "boradcasting |
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
39 raise NotImplementedError('TODO') |
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
40 |
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
41 # derivativs: |
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
42 # dz1 = a1 - y1 ; dz2 = a2 - y2 ; .... |
b6a146f0a61b
[logistic regression] stubbing
Jeff Hammel <k0scist@gmail.com>
parents:
2
diff
changeset
|
43 # dZ = [ dz1 dz2 ... dzm ] |
12 | 44 # Z = w'X + b = np.dot(w', X) + b |
45 # A sigmoid(Z) | |
46 #dZ = A - Y | |
47 #dw = (1./m)*X*dZ' | |
48 #db = (1./m)*np.sum(dZ) | |
49 # w -= alpha*dw | |
50 # b -= alpha*db |