Advertisement
Guest User

Untitled

a guest
Feb 14th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.71 KB | None | 0 0
  1. from pandas import read_csv
  2. from math import exp
  3. from numpy.numarray import dot
  4. from math import sqrt, pow
  5.  
  6. data = read_csv('data-logistic.csv', header=None)
  7.  
  8. y = data[0]
  9. X = data.iloc[:, 1:]
  10. l = len(X)
  11. w = (0, 0)
  12. k = 0.1
  13. border = 1e-5
  14. C = 10
  15.  
  16. print zip(X,y)
  17.  
  18. #def fn(y, x, w, i)
  19.  
  20. def update_weight(X, Y, w, i):
  21.         return w[i] + k/l*sum([(Y[j]*X[j][i]*(1-1/(1+exp((-Y[j])*dot(X[j], w))))-k*C*w[i]) for j in xrange(len(Y))])
  22.  
  23. def distance(w1, w2):
  24.     return sqrt(pow(w2[0]-w1[0], 2) + pow(w2[1]-w1[1], 2))
  25.  
  26. for j in xrange(10000):
  27.     new_w = (update_weight(X, y, w, 0), update_weight(X, y, w, 1))
  28.     dist = distance(w, new_w)
  29.     if dist < border:
  30.         break
  31.     w = new_w
  32.  
  33. print w
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement