Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def train(X, y, W, b, tolerance = 1e-10):
- Jhist = []
- i = 1
- while True:
- m = y.size
- z = X @ W + b
- a = sigmoid(z)
- HessW = (1/m) * (a.T @ (1-a)) * (X.T @ X)
- gradW = (1/m) * (X.T @ (a-y))
- secDer_b = (1/m) * (a.T @ (1-a))
- frstDer_b = (1/m) * np.sum(a-y)
- W -= 0.00001*(np.linalg.inv(HessW) @ gradW)
- b -= 0.00001*(secDer_b/frstDer_b)
- J = cost(X, y, W, b)
- if i != 1 and abs(Jhist[-1] - J) < tolerance:
- print('converged!!!')
- break
- Jhist.append(J)
- if i%100 == 0:
- print("Iteration:: {} - Cost:: {}".format(i, J))
- i += 1
- return W, b, Jhist
Add Comment
Please, Sign In to add comment