Skip to content

Instantly share code, notes, and snippets.

@dtellogaete
Created February 29, 2020 20:50
Show Gist options
  • Save dtellogaete/74c0e6cb529fb0c8b8df01eabbeb4759 to your computer and use it in GitHub Desktop.
Save dtellogaete/74c0e6cb529fb0c8b8df01eabbeb4759 to your computer and use it in GitHub Desktop.
# Algoritmo de gradient descent
class LogisticRegressionGD(object):
def __init__(self, l_rate = 0.1, n_iter =10000, random_state =1):
self.l_rate = l_rate
self.n_iter = n_iter
self.random_state = random_state
def fit(self, X, y):
rgen = np.random.RandomState(self.random_state)
self.theta = rgen.normal(loc = 0.0, scale = 0.01,
size = 1 + X.shape[1])
for i in range(self.n_iter):
net_input = self.net_input(X)
h = self.sigmoid(net_input)
errors = y-h
self.theta[1:] += -self.l_rate*X.T.dot(errors)
self.theta[0] += -self.l_rate*errors.sum()
return self.theta
def sigmoid(self, z):
return 1. / (1. + np.exp(-np.clip(z, -250, 250)))
def net_input(self, X):
return np.dot(X, self.theta[1:]) + self.theta[0]
def predict(self, X):
return np.where(self.sigmoid(self.net_input(X))>= 0.5, 0, 1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment