import numpy as np
X = np.array([[0.5, 1.5], [1.0, 1.0], [1.5, 0.5], [3.0, 0.5], [2.0, 2.0], [1.0, 2.5]]) y = np.array([0,0,0,1,1,1])
X = np.hstack((np.ones((X.shape[0], 1)), X))
print(X)
w = np.array([0.0,0.0])
def sigmoid(X, w):
return 1 / (1 + np.exp(-X @ w))
p = sigmoid(X, w)
def loss(y, p):
return -np.mean(y * np.log(p) + (1 - y) * np.log(1 - p))
learning_rate = 0.00001
for _ in range(100_000):
gradient = X.T @ (sigmoid(X, w) - y) / len(y)
w -= learning_rate * gradient
print(w)
predictions = (p >= 0.5).astype(int)