From c22ea4e94319dce984b806c0738e003845ab8b12 Mon Sep 17 00:00:00 2001 From: Vicolas11 <46172140+Vicolas11@users.noreply.github.com> Date: Wed, 22 Apr 2020 02:25:48 +0100 Subject: [PATCH] Create Akoh_Victor_Ojodom --- Akoh_Victor_Ojodom | 66 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Akoh_Victor_Ojodom diff --git a/Akoh_Victor_Ojodom b/Akoh_Victor_Ojodom new file mode 100644 index 0000000..4fca059 --- /dev/null +++ b/Akoh_Victor_Ojodom @@ -0,0 +1,66 @@ +import numpy as np + +class LogisticRegression: + def __init__(self, lr=0.01, num_iter=100000, fit_intercept=True, verbose=False): + self.lr = lr + self.num_iter = num_iter + self.fit_intercept = fit_intercept + self.verbose = verbose + + def sigmoid(self, z): + return 1 / (1 + np.exp(-z)) + + def addIntercept(self, X): + intercept = np.ones((X.shape[0], 1)) + return np.concatenate((intercept, X), axis=1) + + def loss(self, h, y): + return (-y * np.log(h) - (1 - y) * np.log(1 - h)).mean() + + def fit(self, X, y): + if self.fit_intercept: + X = self.addIntercept(X) + + self.theta = np.zeros(X.shape[1]) + + for i in range(self.num_iter): + z = np.dot(X, self.theta) + h = self.sigmoid(z) + gradient = np.dot(X.T, (h - y)) / y.size + self.theta -= self.lr * gradient + + z = np.dot(X, self.theta) + h = self.sigmoid(z) + loss = self.loss(h, y) + + if(self.verbose == True and i % 10000 == 0): + print('Loss: {} \t'.format(loss)) + + def predictProb(self, X): + if self.fit_intercept: + X = self.addIntercept(X) + + return self.sigmoid(np.dot(X, self.theta)) + + def predict(self, X): + return self.predictProb(X).round() + +#Evaluating Using Logistic Regression created +mdl = LogisticRegression(lr=0.1, num_iter=300000) + +from sklearn.datasets import load_iris +iris = load_iris() +X = iris.data[:, :3] +y = (iris.target != 0) * 1 +mdl.fit(X, y) +pred = mdl.predict(X) +(pred == y).mean() +mdl.theta + +#Evaluating Using Default/In-built Logistic Regression from sklearn +from sklearn.linear_model import LogisticRegression +md = LogisticRegression() +md.fit(X,y) +md.predict(X) +md.coef_ +md.intercept_