From 3cf2e28d784f53478c9b49b77043a85e2d710be4 Mon Sep 17 00:00:00 2001 From: Kavish Bhatia Date: Fri, 26 Apr 2019 15:47:10 +0200 Subject: [PATCH] Add files via upload --- binary_logistic_regression/ML_2.ipynb | 350 +++++++++++++++++++++ binary_logistic_regression/ML_2_lr_001.png | Bin 0 -> 15979 bytes binary_logistic_regression/ML_2_lr_01.png | Bin 0 -> 15945 bytes binary_logistic_regression/data.txt | 100 ++++++ 4 files changed, 450 insertions(+) create mode 100644 binary_logistic_regression/ML_2.ipynb create mode 100644 binary_logistic_regression/ML_2_lr_001.png create mode 100644 binary_logistic_regression/ML_2_lr_01.png create mode 100644 binary_logistic_regression/data.txt diff --git a/binary_logistic_regression/ML_2.ipynb b/binary_logistic_regression/ML_2.ipynb new file mode 100644 index 0000000..ac8f1c3 --- /dev/null +++ b/binary_logistic_regression/ML_2.ipynb @@ -0,0 +1,350 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import math\n", + "import random\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv('data.txt', sep=' ', header=None)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 0 1 2\n", + "0 1.30 -0.540 1\n", + "1 -2.30 -2.500 1\n", + "2 -0.37 -0.047 1\n", + "3 0.49 0.790 1\n", + "4 1.00 0.950 1\n" + ] + } + ], + "source": [ + "print(df.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "#converting pandas dataframe to array\n", + "X = df.values" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "#taking 3rd column as labels\n", + "labels = X.T[2]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "#trimming X with last column and keeping 1st and 2nd\n", + "X = X[:,[0,1]]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def gen_thetas():\n", + " #generating 3 thetas\n", + " poly = np.random.uniform(-0.01,0.01, 3)\n", + " return poly" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "#learning rate\n", + "alpha = 0.01\n", + "\n", + "#dividing dataframe to separate 0's and 1's \n", + "df_new1 = df.head(50)\n", + "df_new2 = df.tail(50)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeYAAAFpCAYAAABJdYvCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAHVFJREFUeJzt3XuMXddVx/HfqjPBA0QelIeKZ2zsEmqa2qZGkz4UUdSk4BDR1ETCJAjUKkiWUKFQQaAhqCoVKBGRsFQFCUVKxR9UCZaaOpRHjJsWEIg+xnVwElLTQks9E1BTg82jk8Yxiz/ujMce37lz7z2PvfY+348UTebM9bn7nDlz1t1r77WPubsAAEAMr0rdAAAAsILADABAIARmAAACITADABAIgRkAgEAIzAAABEJgBgAgEAIzAACBEJgBAAiEwAwAQCBXpHjTa665xrdt25birQEAaN2xY8e+4e7XDvPaJIF527ZtmpubS/HWAAC0zsz+ddjXksoGACAQAjMAAIEQmAEACCTJGDMAAKM6d+6c5ufn9dJLL6Vuypo2btyomZkZTUxMjL0PAjMAIAvz8/O66qqrtG3bNplZ6uZcxt11+vRpzc/Pa/v27WPvh1Q2ACALL730kq6++uqQQVmSzExXX3115R49gRkAkI2oQXlZHe0jMAMAMKS7775b1113nXbu3NnYexCYAQAY0rvf/W49+eSTjb4Hk78AAEU6fHxBDx45qRfOLGrz1KTu2btD+/ZMV9rnW9/6Vn31q1+tp4FrIDADwAiauNmjfoePL+jex5/R4rnzkqSFM4u69/FnJCn874tUNgAMaflmv3BmUa6Vm/3h4wupm4ZVHjxy8kJQXrZ47rwePHIyUYuGR2AGgCHlfLPvmhfOLI60PRICMwAMKeebfddsnpocaXskBGYAGFLON/uuuWfvDk1ObLhk2+TEBt2zd0el/d511116y1veopMnT2pmZkaPPPJIpf31w+QvABjSPXt3XDKhSKrnZo/6LU/wqnui3qOPPlpH8wYiMAMdwWzi6pq62aMZ+/ZMZ/m7ITADHZBz6Ug0ud7skQ/GmIEOYDYxkA8CM9ABzCYG8kFgBjqA2cRAPgjMQAc0VToCoH6VA7OZbTGzT5vZ82b2nJn9Uh0NA1CffXumdf8duzQ9NSmTND01qfvv2MUkJmAMTz75pHbs2KHrr79eDzzwQO37r2NW9iuSfsXdv2BmV0k6ZmZH3f0fa9g3EEbu5UbMJgaqO3/+vN7znvfo6NGjmpmZ0Y033qjbb79dN9xwQ23vUbnH7O7/5u5fWPr//5b0vCT++lEUHl4AZOjEIengTumDU72vJw5V3uXnPvc5XX/99XrNa16jK6+8UnfeeaeeeOKJGhq7otYxZjPbJmmPpM/WuV8gNcqNgMycOCR94r3S2VOSvPf1E++tHJwXFha0ZcuWC9/PzMxoYaHeD+i1BWYz+05JH5P0y+7+X31+fsDM5sxs7sUXX6zrbYFWUG4EZOapD0nnVv19nlvsba/A3S/bZmaV9rlaLYHZzCbUC8ofdffH+73G3R9291l3n7322mvreFugNZQbAZk5Oz/a9iHNzMzo1KlTF76fn5/X5s2bK+1ztTpmZZukRyQ97+6/V71JQDyUGwGZ2TQz2vYh3XjjjfrSl76kr3zlK3r55Zf12GOP6fbbb6+0z9Xq6DHfJOlnJd1sZk8v/XdbDfsFwqDcCMjMLR+QJlZltCYme9sruOKKK/TQQw9p7969et3rXqf9+/fr9a9/faV9XvYeVXfg7n8rqd4EOxAQ5UZARnbv73196kO99PWmmV5QXt5ewW233abbbmuu/8nTpQAAZdq9v5ZA3DaW5AQAIBB6zECGcl+FDMDaCMxAZpZXIVte8GR5FTJJBGcUz91rrxuuU78651GRygYywypk6KqNGzfq9OnTtQS/Jri7Tp8+rY0bN1baDz1mIDOsQoaumpmZ0fz8vCKvHrlx40bNzFSrlSYwA5nZPDWphT5BmFXIULqJiQlt3749dTMaRyobyAyrkAFlo8cMZGZ5ghezsoEyEZiBilKULrEKGVAuAjNQAaVLAOrGGDNQAaVLAOpGjxmogNIlrMaqbKiKHjNQwVolSpQuddPy0MbCmUW5VoY2Dh9fSN00ZITADFRA6RIuxtAG6kAqG6iA0iVcjKEN1IHADFRE6RKWsSob6kAqGwBqwtAG6kCPGQBqwtAG6kBgBoAaMbSBqkhlAwAQCIEZAIBASGUDALAkwsptBGYAABTnoTSksgEAUJyV2wjMAAAozsptBGYAABTnoTSMMQMozm8efkaPfvaUzrtrg5nuetMW/fa+XambheDu2bvjkjFmKc3KbQRmAEX5zcPP6I8+87UL3593v/A9wRmDRFm5zdy91TeUpNnZWZ+bm2v9fQGU73vv/XOd73Nf22Cmf77/tgQtAiQzO+bus8O8ljFmAEXpF5QHbQeiIZVdsAiF8kDbNpit2WMGckCPuVDLhfILZxblWimUP3x8IXXTgEbd9aYtI20HoqHHXKhBhfL0mlFF9EzM8gQvZmUjVwTmQkUplEdZoixZuJ7f3rcr20Ac/YMPmkcqu1BRCuVRlihLFpaKIShIBOZi3bN3hyYnNlyyLUWhPOp1+PiCbnrgU9r+/j/TTQ98qvUbNpmYZvHBBxKp7GJFKZRHfSKkkTdPTWqhTxAmE1MPPvhAIjAXbd+eaQJxQSJM6IuyZGGp+OADiVQ2kI0Ival9e6Z1/x27ND01KZM0PTWp++/YxQfAmjAEBYkeM5CNKL0pMjHNYQgKEoEZyAZp5G7ggw8IzEAm6E1djppflIjADGSE3tSKVLPU+TCApjH5C0CWUtT8sgAI2kCPGZ1Cb6ccKWapRyhZQ/kIzOiMulKfBPcYUsxSj1CyhvKRykZn1JH6JJUZx6Ca36aWLmUNerSBwIzOqKO3w1rGcay12Imkxj48sQAI2kAqG50xauqzX8qaVGYs/Wap3/TApxobB6ZkDW0gMKMzRlmgY63x6Klvn9B/fvPcZa8fNZXJOHVzmv7wRMkamkZgRmeM0ttZK2X9bVe8SpMTGyqtvhXhKVEli7J0KTAuAjM6Zdjezlq9q7OL53Twp95wSXB/2/dfqwePnNT7/vjpoXq/lNw0i6VLkTsCM9DHoF7XxcF9nN4v49TNYhwYuSMwY2wlj5MO2+sap/dLqrV5jAMjZ5RLYSxt1/M2VZe6lmGfOzxO75eSGwCD0GPGWNocJ001WWqYXtc4vV9SrQAGITBnLGUque5x0kHHEnmy1LgTjUi1AlhLLalsM7vVzE6a2ZfN7P117BODpV4ass6lCdc7lsiTpYZNeQPAsCr3mM1sg6Tfl/QjkuYlfd7M/sTd/7HqvrG21L3IOktS1juW6JOl6P0CqFMdPeY3Svqyu/+Lu78s6TFJ76xhvxggdS+yzp7iesfCZCkAXVLHGPO0pFMXfT8v6U017BcDROhF1tVTXO9YUk+WWj3+/bbvv1af/uKLTNwC0Ig6ArP12eaXvcjsgKQDkrR169Ya3rbbSlrdaJhjSZUu7jcj/I8+87ULP2c5TQB1qyMwz0vactH3M5JeWP0id39Y0sOSNDs7e1ngxmhS9yLrFPlY+o1/r5ZihnjJi7sAXVdHYP68pO8zs+2SFiTdKemna9gv1lHSpKOoxzLsmH2bM8RLfAgGHzSAFZUDs7u/Yma/IOmIpA2SPuLuz1VuWQdwM4pvrfHvfq9rS+oZ+XUr8YMGUEUtdczu/ufu/lp3/153/5069lm61HXIGE6/GeGrtT22n3pGft0GfdAAuoi1shPhZpSH5bKwqcmJC9u+48oNmpqcSLagSJ2Lu0RQ2gcNoCqW5EykCzejklL133rl/y78//++fF6TE9LBn3pDkuMpaUa+FKP0D4iEHnMipfV6VispVR8tu9HEMqBNPL1r2H2ygAxwKXrMiZTW61mtpAlKEbMbdc5ib2Ly1Sj7jFwuB6RAYE6k9JtRxGA2rtJTrU18iBp1n1HL5YAUCMwJlXwzKimYlZ7daOJDVEkfzIC2McaMRpQ0blj6ox2bmO9Q+hwKoEn0mNGI0lL1JWc3msgIlJ5lAJpEYEZjSg5mJWniQ1RpH8yANpl7+8+TmJ2d9bm5udbfFwCAFMzsmLvPDvNaeswAGlXSQjNSeceDeAjMQAJdubmX9oCK0o4HMTErG2hZ06uiNbGK17iirZpWVWnHg5gIzEDLmry5R1sKtbR65tKOBzERmIGWNXlzj9ajK62eubTjQUwEZqBlTd7co/XoSlpoRirveBATgRloWZM392g9utJWTSvteBATdcxAAk3Nyl49a1jqBf0qwaMrM8iBJlHHDATX1Kpoda+4RXkQ0D4CM1CYOoN+Sc/VBnJBYEYnkI4dT7TJZEAXMPkLxYtW25uTaJPJgC4gMKN40Wp7c0J5ENA+UtkoHunY8fH4RqB9BOaCMa7as3lqUgt9gjDp2OGuEZ6rDbSLVHahGFddQTq2P64RICYCc6EYV12Rw2pNKZ4IxTUCxEQqu1CMq14qcjo21SIeXCNATPSYC0WZSz5S9Vy5RoCYCMyFYlw1H6l6rtGukRTpfCAiUtmFoswlH6lmjUe6RliTG1jB06WAxJp4IlRubnrgU30/nExPTerv3n9zghYB9eLpUkBGovVcU7SDiWjACgIzEECEWeMp08ksAgOsYPIXAElp65qjTUQDUqLHDEBS2nRypHQ+kBqBGYCk9OnkCOl8IAJS2QAkkU4GoqDHDEAS6WQgCgIzgAtIJwPpkcoGACAQAjMAAIGQygZQm1QrhwElITADqAUPogDqQSobQC1SrhwGlITADKAWPIgCqAepbAADDTtunHrlMKAU9JgBrGl53HjhzKJcK+PGh48vXPZaVg4D6kFgBrCmUcaN9+2Z1v137NL01KRM0vTUpO6/YxcTv4ARkcquiPIQlGzUcWNWDgOqo8dcwShpPiBHa40PM24MNIfAXAHlISgd48ZA+0hlV0B5CErHE6eA9hGYK6A8BF3AuDHQLlLZFZDmAwDUjR5zBaT5AAB1IzBXRJoPAFAnUtkAAARSKTCb2YNm9kUzO2FmHzezqboaBgBAF1XtMR+VtNPdd0v6J0n3Vm8SAADdVSkwu/tfuvsrS99+RtJM9SYBANBddY4x3y3pL2rcHwAAnbPurGwz+6SkV/f50X3u/sTSa+6T9Iqkjw7YzwFJByRp69atYzUWAIDSrRuY3f3tg35uZu+S9OOSbnF3H7CfhyU9LEmzs7Nrvg4AgC6rVMdsZrdK+nVJP+zu36ynSQAAdFfVMeaHJF0l6aiZPW1mf1BDmwAA6KxKPWZ3v76uhgAAAFb+AgAgFAIzAACB8BALoAaHjy/wlDEAtSAwAxUdPr6gex9/RovnzkuSFs4s6t7Hn5EkgjOAkZHKBip68MjJC0F52eK583rwyMlELQKQMwIzUNELZxZH2g4AgxCYgYo2T02OtB0ABiEwAxXds3eHJic2XLJtcmKD7tm7I1GLAOSMyV9ARcsTvJiVDaAO2QdmylQQwb4901x3AGqRdWCmTAUAUJqsx5gpUwEAlCbrwEyZCgCgNFkHZspUAAClyTowU6YCAChN1pO/KFMBAJQm68AsUaYCAChL1qlsAABKQ2AGACAQAjMA5OTEIengTumDU72vJw6lbhFqlv0YMwB0xolD0ifeK51bWqvh7Kne95K0e3+6dqFW9JgBIBdPfWglKC87t9jbjmIQmIFSkOIs39n50bYjSwRmoATLKc6zpyT5SoqT4FyWTTOjbUeWCMxACUhxdsMtH5AmVi05PDHZ245iEJiBEpDi7Ibd+6V3fFjatEWS9b6+48NM/CoMs7KBEmyaWUpj99mOsuzeTyAuHD1moASkOIFiEJiBEpDiBIpBKhsoBSlOoAj0mAEACITADABAIARmAAACITADABAIgRkAgEAIzAAABEJgBgAgEAIzAACBEJgBAAiEwAwAQCAEZgAAAiEwAwAQCIEZAIBACMwAAARCYAYAIBACMwAAgRCYsbYTh6SDO6UPTvW+njiUukUAULwrUjcAQZ04JH3ivdK5xd73Z0/1vpek3fvTtQsACkePGf099aGVoLzs3GJvOwCgMQRm9Hd2frTtAIBaEJjR36aZ0bYDAGpBYEZ/t3xAmpi8dNvEZG87AKAxBGb0t3u/9I4PS5u2SLLe13d8uIyJX12Zbd6V4wQKw6xsrG33/jIC8cW6Mtu8K8cJFIgeM7qlK7PNu3KcQIEIzOiWrsw278pxAgUiMKMdUcY715pVbq8qawyWWfVAtgjMaN7yeOfZU5J8ZbwzRSDsN9tckvx8ujY1gVn1QLZqCcxm9qtm5mZ2TR37Q2EijXcuzza3DZf/rKQx2JJn1QOFqzwr28y2SPoRSV+r3hwUKdp45+790uMH+v+spDHYEmfV1+XEod6HsLPzvfT+LR/gXCGMOnrMByX9miSvYV8oUcTxzohtQjsiDa0AfVQKzGZ2u6QFd/+HmtqDEkUc74zYJrQj0tAK0Me6qWwz+6SkV/f50X2SfkPSjw7zRmZ2QNIBSdq6desITUT2llOEkVKHEduEdkQbWgFWMffxMtBmtkvSU5K+ubRpRtILkt7o7v8+6N/Ozs763NzcWO8LAJUc3LmUxl5l0xbpfc+23x50gpkdc/fZYV47dirb3Z9x9+vcfZu7b5M0L+kH1wvKAJAUwxgIjjpmAN1CKRmCq+0hFku9ZqA5bZa4UE5TNkrJEBhPl0Ie2nxaEk9mApAQqWzkoc0SF8ppACREYEZz6nxwRZslLpTTIMpDV9BJBGY0o+7VldpcqYtVwbqNlcGQGIEZzag7HdxmiQvlNN3GUAYSIzA3KXo6rMn21Z0ObrPEpY33in5tdBlDGUiMWdlNiT6zt+n2bZpZY3WlCungNktcmnyv6NdG1zVx7QIjoMfclOjpsKbbRzp4bdGvja7j2kViBOamRE+HNd0+VldaW/Rro+u4dpFY+ansVCs4RU+HtdG+utLBpa3CFf3ayElT10bOK4OV9vfSQWX3mFOWPURPh0Vv37ISS1dyOffRlXhtVMU5KULZgTnlWF70dFj09i0rcTw2l3MfXYnXRlWckyKUncpOPZYXPR0WvX3S+r/DSGm7UdoS6dwP0+5I53lZ6r/viDgnRSi7x8wKTvkb9DuMlLaL1JZRDNPuqMfG3/flOCdFKDswM5aXv0G/w0hpu0htGcUw7Y56bPx9X45zUoSyAzNjefkb9DuMlLaL1Jb1XLzqWL/Z4dKl7Y56bPx9X45zUoSyx5ilWGN5GM9av8NIZUeR2jLI6lXH1nJxuyMfG3/fl+OcZK/sHjPKFiltF6ktg/RLS6+2ut25HBtQCAIz8hUpbRepLYMMTD+v0e5cjg0ohLl76286Ozvrc3Nzrb9vdlKXqKR+/6pStj/quTu4c4209Bbpfc+23x5cLuq1g0rM7Ji7zw7zWnrMUaUuUUn9/lWlbH/kc0daOrbI1w5aQ2COKnWJSur3rypl+yOfO9LSsUW+dtCa8mdl5yp1iUrq968qZfujnztm7cZNF0e/dtAKesxRpV7BZ/K7RtseTcrzl/p3h8Eip4u5diACc1yMBVaT8vzxu4stcrqYawciMMeVeixw8T9H2x5NyvOX6r0vXtHr4M4YPcCIIqeLU//dIwTKpdAfZTV56bei18QkN/V+uLaRAOVSqI6UWl4ip2ej4dpGcARm9EdKLS+R07PRcG0jOMqlsLb1ymqilpwMK/f2XyzygyYiomQMgdFjxngil5wMI/f2r0Z6FigGgRnjyX1MM/f2r0Z6FigGqWyMJ/cxzdzb3w/pWaAI9JgxntxXKMq9/QCKRWDGeHIf08y9/QCKRWCOLPJKTrmPaebe/tQiX5tA5lj5KypWckJUXJvAyFj5qwSlzRpGObg2gUYRmKMqcdYwysC1CTSKwBwVs4bz1sQYbJRx3bqvzSjHBQRBYI6KWcP5amJVsUgrldV5bUY6LiAIAnNUzBrOVxNjsJHGdeu8NiMdFxAEK39FxkpOeWpiDDbauG5d1+YoxzXooSMlPZAEnUdgBurWxJOeSn161LDHtbpEaznlvWytnxGckSFS2UDdmpgfUOqcg2GPa1DKm3Q4CkOPGajbci+tztRqE/uMYNjjGieVT/kWMlX+yl+MPQH5O7hzjZT3lt7XtX72vmebbVcXcU8dCyt/LaMUAyjDoJR3qWn+iLintqLswMzYE1CGQSValBa2h3tqK8oeY45WYoJmkFrrhkElWpQWtoN7aivK7jGzrGX5SK0B7eGe2oqyAzNjT+UjtQa0h3tqK8oOzIw9lY/UWvl4yEUc3FNbUfYYs8TYU+lKXRELPYNW/OLvOg3uqY0ru8eM8pFaKxtDFeggAjPyRmqtbAxVoIPKT2WjfBFTa8OWcFHqNRhDFeggesxA3YYt4aLUa30MVaCDKgdmM/tFMztpZs+Z2e/W0Sgga8OOizJ+uj6GKtBBlVLZZvY2Se+UtNvdv2Vm19XTLCBjw46LMn46nIhDFUCDqvaYf17SA+7+LUly969XbxKQuWFXR2IVJQB9VA3Mr5X0Q2b2WTP7azO7sY5GAVkbdlyU8VMAfaybyjazT0p6dZ8f3bf0779L0psl3SjpkJm9xvs85NnMDkg6IElbt26t0mYgtuW063qzrYd9HYBOsT4xdPh/bPakeqnsv1r6/p8lvdndXxz072ZnZ31ubm7s9wUAICdmdszdZ4d5bdVU9mFJNy+96WslXSnpGxX3CQBAZ1VdYOQjkj5iZs9KelnSu/qlsQEAwHAqBWZ3f1nSz9TUFgDraXulMFYmA1rHkpxALtp+0hJPdgKSYElOIBdtrxTGymRAEgRmIBdtrxTGymRAEgRmIBdtrxTGymRAEgRmIBdtrxTGymRAEgRmIBdtP2mJJzv1d+KQdHCn9MGp3lce04maVVr5a1ys/AUgS6tnqku9LAIfWLCONlf+AoDuYKY6WkBgBoBhMVMdLSAwA8CwmKmOFhCYAWBYzFRHCwjMADAsZqqjBayVDQCj2L2fQIxG0WMGACAQAjMAAIEQmAEACITADABAIARmAAACITADABAIgRkAgEAIzAAABEJgBgAgEAIzAACBEJgBAAiEwAwAQCDm7u2/qdmLkv619Teu5hpJ30jdiExx7sbHuauG8zc+zt34+p2773H3a4f5x0kCc47MbM7dZ1O3I0ecu/Fx7qrh/I2Pcze+queOVDYAAIEQmAEACITAPLyHUzcgY5y78XHuquH8jY9zN75K544xZgAAAqHHDABAIATmIZnZg2b2RTM7YWYfN7Op1G3KiZn9pJk9Z2b/Z2bM9ByCmd1qZifN7Mtm9v7U7cmJmX3EzL5uZs+mbktuzGyLmX3azJ5f+pv9pdRtyoWZbTSzz5nZPyydu98aZz8E5uEdlbTT3XdL+idJ9yZuT26elXSHpL9J3ZAcmNkGSb8v6cck3SDpLjO7IW2rsvKHkm5N3YhMvSLpV9z9dZLeLOk9XHtD+5akm939ByS9QdKtZvbmUXdCYB6Su/+lu7+y9O1nJM2kbE9u3P15dz+Zuh0ZeaOkL7v7v7j7y5Iek/TOxG3Khrv/jaT/SN2OHLn7v7n7F5b+/78lPS9pOm2r8uA9/7P07cTSfyNP5CIwj+duSX+RuhEo2rSkUxd9Py9ujmiZmW2TtEfSZ9O2JB9mtsHMnpb0dUlH3X3kc3dF/c3Kl5l9UtKr+/zoPnd/Yuk196mX6vlom23LwTDnD0OzPtsooUBrzOw7JX1M0i+7+3+lbk8u3P28pDcszUP6uJntdPeR5joQmC/i7m8f9HMze5ekH5d0i1Nndpn1zh9GMi9py0Xfz0h6IVFb0DFmNqFeUP6ouz+euj05cvczZvZX6s11GCkwk8oekpndKunXJd3u7t9M3R4U7/OSvs/MtpvZlZLulPQniduEDjAzk/SIpOfd/fdStycnZnbtcsWOmU1KerukL466HwLz8B6SdJWko2b2tJn9QeoG5cTMfsLM5iW9RdKfmdmR1G2KbGmi4S9IOqLe5JtD7v5c2lblw8welfT3knaY2byZ/VzqNmXkJkk/K+nmpXvd02Z2W+pGZeK7JX3azE6o9+H6qLv/6ag7YeUvAAACoccMAEAgBGYAAAIhMAMAEAiBGQCAQAjMAAAEQmAGACAQAjMAAIEQmAEACOT/Ad2u2uJQnZ1/AAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#plotting data points\n", + "fig = plt.figure(figsize=(8,6))\n", + "ax = fig.add_subplot(1,1,1)\n", + "ax.scatter(df_new1[0],df_new1[1], label = '1')\n", + "\n", + "plt.scatter(df_new2[0],df_new2[1], label = '0')\n", + "\n", + "plt.legend()\n", + "plt.show()\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# get initial thetas\n", + "thetas = gen_thetas()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0.00780814, 0.00441117, -0.00360915])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "thetas" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def model(thetas, x1, x2):\n", + " return thetas[0] + thetas[1]*x1 + thetas[2]*x2\n", + "\n", + "def prediction(thetas, x1): #x1 is list here\n", + " y_predicted = []\n", + " for i in range(len(x1)):\n", + " y_predicted.append((thetas[0] + thetas[1]*x1[i]) * (-1/thetas[2]))\n", + " return y_predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def sigmoid(x):\n", + " return 1. /(1. + math.exp(-x))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "#initial prediction\n", + "y_init = prediction(thetas,X.T[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#plotting initial line\n", + "fig = plt.figure(figsize=(8,6))\n", + "ax = fig.add_subplot(1,1,1)\n", + "ax.scatter(df_new1[0],df_new1[1], label = '1')\n", + "\n", + "plt.scatter(df_new2[0],df_new2[1], label = '0')\n", + "\n", + "plt.plot(X.T[0],y_init,'g', label = 'model line')\n", + "\n", + "plt.legend()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "def sgd(x1, x2, alpha, thetas, epochs=5000):\n", + " \n", + " for k in range(epochs): \n", + " for i in range(len(x1)):\n", + " z = model(thetas, x1[i], x2[i])\n", + " \n", + " gradient = labels[i] - sigmoid(z)\n", + " thetas[0] = thetas[0] + alpha * gradient\n", + " thetas[1] = thetas[1] + alpha * gradient * x1[i]\n", + " thetas[2] = thetas[2] + alpha * gradient * x2[i]\n", + " \n", + " return thetas\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "#getting final thetas\n", + "t = sgd(X.T[0],X.T[1],alpha, thetas)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([23.18941305, -3.99543127, 9.11136289])" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#calculating final values of x2 after getting final thetas\n", + "y_new = prediction(t,X.T[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlUAAAHVCAYAAADYXg73AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl4VdW9//HPSgwQBIWClCEiWBFlCKARqnKdUKEoQx2oiCP28tOrFFtKFelFoFS8Yq2laHuptWDBgSIgFRxQQS5UtIkgoDhSpjgwo5RopvX7IxAJOSc5J2efPb5fz+Mj2ftkn+8ZkvPJd629trHWCgAAAKnJ8LoAAACAMCBUAQAAOIBQBQAA4ABCFQAAgAMIVQAAAA4gVAEAADiAUAUAAOAAQhUAAIADCFUAAAAOOMaLO23evLlt166dF3cNAACQlIKCgl3W2hNqu50noapdu3bKz8/34q4BAACSYozZksjtGP4DAABwgCOhyhjTxBgzzxjzvjFmozHmbCeOCwAAEBRODf/9TtKL1tqrjDH1JDV06LgAAACBkHKoMsYcJ+k8STdJkrW2WFJxsscpKSnR9u3b9fXXX6daEnykQYMGysnJUVZWltelAACQVk50qk6WtFPSX4wx3SQVSBplrf33kTcyxoyQNEKS2rZtW+0g27dvV+PGjdWuXTsZYxwoC16z1mr37t3avn272rdv73U5AACklRNzqo6RdIakP1hre0j6t6S7j76RtXaGtTbPWpt3wgnVz0r8+uuv1axZMwJViBhj1KxZM7qPAIBIcCJUbZe03Vr75qGv56kiZCWNQBU+vKYAgKhIOVRZaz+XtM0Y0/HQpj6S3kv1uAAAAEHi1DpVIyXNMcask9Rd0n0OHddV55xzTq23+fGPf6z33qvIjPfdV/VhJvL9jRo1qltxSWjXrp127dpVp9scuT2RxwMAACo4EqqstWsPzZfKtdYOttbudeK4bvvHP/5R620ee+wxderUSVL1UJXI9wdJ2B4PAADp5Mllampz54t3au3nax09ZveW3fVwv4drvE2jRo104MABLV++XBMmTFDz5s21YcMGnXnmmZo9e7aMMbrgggv04IMPat68eSoqKlL37t3VuXNnzZkzp/L7Dxw4oEGDBmnv3r0qKSnR5MmTNWjQoLj3u3nzZvXr10+9e/fW6tWr1a1bN91888269957tWPHDs2ZM0c9e/bUnj17NHz4cG3atEkNGzbUjBkzlJubq927d2vo0KHauXOnevbsKWtt5bFnz56tadOmqbi4WL169dKjjz6qzMzMhJ6zRJ6PgoIC/exnP9OBAwfUvHlzzZw5U61atUrsRQEAIES4TE0ca9as0cMPP6z33ntPmzZt0qpVq6rsv//++5Wdna21a9dqzpw5VfY1aNBACxYs0Ntvv61ly5Zp9OjRVYJOLB9//LFGjRqldevW6f3339eTTz6plStX6sEHH6zsiN17773q0aOH1q1bp/vuu0833HCDJGnixInq3bu31qxZo4EDB2rr1q2SpI0bN+qZZ57RqlWrtHbtWmVmZlarNZXno6SkRCNHjtS8efNUUFCg4cOHa9y4cXU6PgAAQefLTlVtHSU39OzZUzk5OZKk7t27a/Pmzerdu3dC32ut1T333KMVK1YoIyNDhYWF+uKLL9SyZcu439O+fXt17dpVktS5c2f16dNHxhh17dpVmzdvliStXLlSzz77rCTpoosu0u7du7V//36tWLFC8+fPlyRddtllatq0qSTp1VdfVUFBgc466yxJUlFRkVq0aJH8k6HYz0eTJk20YcMGXXLJJZKksrIyulQAgMjyZajyg/r161f+OzMzU6WlpQl/75w5c7Rz504VFBQoKytL7dq1q3WtpiPvLyMjo/LrjIyMyvuO1e06vGRBrKULrLW68cYbNWXKlIRrT6S+w8+HtVadO3fWG2+8kfLxAQAIOob/UpCVlaWSkpJq2/fv368WLVooKytLy5Yt05YtWxy5v/POO69y+G758uVq3ry5jjvuuCrbX3jhBe3dW3GeQJ8+fTRv3jzt2LFDkrRnzx7HapGkjh07aufOnZWhqqSkRO+++65jxwcAIEgIVSkYMWKEcnNzNWzYsCrbhw0bpvz8fOXl5WnOnDk67bTTHLm/CRMmKD8/X7m5ubr77rs1a9YsSRVzrVasWKEzzjhDL7/8cuVlgDp16qTJkyfr0ksvVW5uri655BJ99tlnjtQiSfXq1dO8efN01113qVu3burevTtnDAIAIsvUNoE6HfLy8mx+fn6VbRs3btTpp5/uei1IP15bAIDTrLWuXbXDGFNgrc2r7XZ0qgAAQGC8uf1NZUzMUMakDA352xCvy6mCieoAAMDXSstL9fOXf67fvfm7Ktuv7nS1RxXFRqgCAAC+tO6Lder9eG99VfxVle1Lr1+qi0++2KOq4iNUAQAA3yi35Rq/bLx+/X+/rrL9itOv0KzBs9SoXvqvoVtXhCoAAOC5D3d/qAtnXahPv/q0yvaFP1qoQafFv9SbnxCqAACAJ6y1emDVA7r71burbL/k5Ev0zFXPqGl2U48qqxvO/jvCtGnTdPrpp2vYsGFatGiR7r///jofq1Gj9Lcn27Vrp127dtXpNkduP+ecc9JSHwAAsWzZt0WnTT9NGZMyqgSqOVfMkb3X6uXrXw5coJLoVFXx6KOP6oUXXlD79u0lSQMHDvS4InewYCcAIN2stfpD/h90+5Lbq2w/O+dsLbxmoVocW7dr0/qJL0PVnXfeqbVr1zp6zO7du+vhh+NfqPnWW2/Vpk2bNHDgQA0fPlxNmzZVfn6+pk+frptuuknHHXec8vPz9fnnn+uBBx7QVVddpQMHDmjQoEHau3evSkpKNHnyZA0aFH/cd/PmzerXr5969+6t1atXq1u3brr55pt17733aseOHZozZ4569uypPXv2aPjw4dq0aZMaNmyoGTNmKDc3V7t379bQoUO1c+dO9ezZs8q1AGfPnq1p06apuLhYvXr10qOPPqrMzMyEnptGjRrpwIEDWr58uSZMmKDmzZtrw4YNOvPMMzV79mwZY1RQUKCf/exnOnDggJo3b66ZM2dy8WQAQK0+P/C5Ln/ychV8VlBl+/9e/r8aceYIj6pKD4b/DvnjH/+o1q1ba9myZfrpT39abf9nn32mlStX6vnnn9fdd1e0Khs0aKAFCxbo7bff1rJlyzR69OiYFz0+0scff6xRo0Zp3bp1ev/99/Xkk09q5cqVevDBB3XfffdJqrjsTI8ePbRu3Trdd999uuGGGyRJEydOVO/evbVmzRoNHDhQW7dulVSxYvkzzzyjVatWae3atcrMzKy8FmCy1qxZo4cffljvvfeeNm3apFWrVqmkpEQjR47UvHnzVFBQoOHDh2vcuHF1Oj4AIBqeeOcJmYlGrX7TqjJQdWnRRVvv3Cp7rw1doJJ82qmqqaPklcGDBysjI0OdOnXSF198IamilXnPPfdoxYoVysjIUGFhob744gu1bNky7nHat2+vrl27SpI6d+6sPn36yBijrl27avPmzZKklStX6tlnn5UkXXTRRdq9e7f279+vFStWaP78+ZKkyy67TE2bVow3v/rqqyooKNBZZ50lSSoqKlKLFnVro/bs2VM5OTmSKrp7mzdvVpMmTbRhwwZdcsklkqSysjK6VACAanYf3K0r516p17e8XmX7Q5c+pDu/f6drl5Xxii9DlR/Vr1+/8t+Hu1Fz5szRzp07VVBQoKysLLVr105ff/11wsfJyMio/DojI0OlpaVVjn+kw2/EWG9Ia61uvPFGTZkyJclHVXN9mZmZKi0tlbVWnTt31htvvJHy8QEA4TN/43xdOffKKttOOv4kvXrDq/red77nUVXuY/gvBfv371eLFi2UlZWlZcuWacuWLY4c97zzzqscvlu+fLmaN2+u4447rsr2F154QXv37pUk9enTR/PmzdOOHTskSXv27HGsFknq2LGjdu7cWRmqSkpK9O677zp2fABA8Hz5zZca8NQAmYmmSqCaeMFElY0v0+Y7N0cqUEl0qlIybNgwDRgwQHl5eerevbtOO+00R447YcIE3XzzzcrNzVXDhg01a9YsSRVzrYYOHaozzjhD559/vtq2bStJ6tSpkyZPnqxLL71U5eXlysrK0iOPPKKTTjrJkXrq1aunefPm6Sc/+Yn279+v0tJS3XnnnercubMjxwcABMeLH7+oH8z5QZVtzbKb6fWbXlfnFtH+XDC1TaxOh7y8PJufn19l28aNG3X66ae7XgvSj9cWAILtYMlB/XjRj/XUhqeqbB9zzhhN6TNFmRmJnW0eVMaYAmttXm23o1MFAABiWrFlhc6feX6VbfUz62vV8FU6s/WZHlXlX4QqAABQqbisWCOXjNSMt2dU2f7/zvx/mvaDaaqXWc+jyvyPUAUAAPTPwn/qnMfPUWl5aZXtK25aof846T88qipYCFUAAERUaXmp7lp6lx5a/VCV7cO6DtOfBvxJ2VnZHlUWTIQqAAAiZsOODTrvL+dp79d7q2x/cdiL6ntKX4+qCj5CFQAAEVBuyzXp9Uma+PrEKtsHdRykv/7wr2pcv7FHlYUHoeoIw4cP1/PPP68WLVpow4YNXpcDAEDKPt7zsS6adZG2fbmtyvb5Q+brh6f/0KOqwimwoWrhmkJNfekDfbqvSK2bZGtM344a3KNNSse86aabdMcdd1RewBgAgCCy1uo3b/xGY5aOqbK9T/s+mnv1XH0n+zseVRZugQxVC9cUauz89SoqKZMkFe4r0tj56yUppWB13nnnVV7UGACAoNm2f5v6zemn93a+V2X7E4Of0PXdrveoqugIZKia+tIHlYHqsKKSMk196YOUu1UAAATN/+b/r25dfGuVbWe1PkuLhi5Sy0YtPaoqegIZqj7dV5TUdgAAwuaLA19o4NMD9VbhW1W2/+GyP+jWvFvjfBfSKZChqnWTbBXGCFCtm7CeBgAg3Oasm6PrFlxXZdvpzU/Xi9e9qLbHt/WoKkgBDVVj+nasMqdKkrKzMjWmb0cPqwIAID32Fu3V1X+7Wq/+69Uq26deMlWjzx4tY4xHleFIgQxVh+dNOX3239ChQ7V8+XLt2rVLOTk5mjhxom655RYnSgYAIGk3P3ezZq6dWWXbicedqFdveFUdmnXwpijEFchQJVUEK6cnpT/11FOOHg8AgGR99tVnav1Q62rbbz3zVj1y2SPKMBkeVIVEBDZUAQAQJnctvUsP/OOBatvnXDFH13a91oOKkCxCFQAAHtlbtFffeSD2QpxF44rU4JgGLleEVNBDBADAZVNXTZWZaKoFquk/mC57r5W91xKoAohOFQAALvh38b/VaEqjmPu+vPtLLmgcAnSqAABIo8fefkxmoqkWqCZdMKmyK0WgCgc6VQAAOKy4rFj1J9ePuW/nmJ1q3rC5yxXBDXSqjvLiiy+qY8eOOuWUU3T//fd7XQ4AIEDmvTdPZqKpFqjuOOuOyq4UgSq8gtupWjdXenWStH+7dHyO1Ge8lDskpUOWlZXp9ttv19KlS5WTk6OzzjpLAwcOVKdOnRwqGgAQNmXlZWrw6wYqLS+ttm/rnVt14vEnelAVvBDMULVurvT3n0glh67/t39bxddSSsHqrbfe0imnnKKTTz5ZknTNNdfoueeeI1QBAKp5ZdMruuSvl1Tb/qPOP9LTVz3tQUXwWjBD1auTvg1Uh5UUVWxPIVQVFhbqxBO//YsiJydHb775Zp2PBwAIF2ut2v2unbbu31pt3wd3fKBTm53qQVXwi2CGqv3bk9ueIGtttW1cpBIAsGDjAl0x94pq2y9od4GW3bjMg4rgR8EMVcfnVAz5xdqegpycHG3b9u1xt2/frtatq19/CQAQDWZi7D+sC0YU6IxWZ7hcDfwumGf/9RkvZWVX3ZaVXbE9BWeddZY++ugj/etf/1JxcbGefvppDRw4MKVjAgCC5fXNr8tMNDEDVfn4ctl7LYEKMQWzU3V43pTDZ/8dc8wxmj59uvr27auysjINHz5cnTt3dqBgAIDfxetKzRo8Szd0u8HlahBEwQxVUkWASjFExdK/f3/179/f8eMCAPzn9c2v64JZF8TcVza+TBkmmAM68EZwQxUAAHUUryv14CUPavQ5o12uBmFBqAIARML6L9Yr94+5MfcVjStSg2MauFwRwsZXocpayxIGIRNrmQoAcFO8rtSl37tUL133ksvVIMx8E6oaNGig3bt3q1mzZgSrkLDWavfu3WrQgL/+ALirpq7Unl/sUdPspi5XhCjwTajKycnR9u3btXPnTq9LgYMaNGignJzU1g8DgETF60qd3PRkffKTT1yuBlHjWKgyxmRKypdUaK29PNnvz8rKUvv27Z0qBwAQEYVfFirnt7H/eNtw2wZ1bsHSOHCHk52qUZI2SjrOwWMCABBTvK6UJNl7mc8J9zkSqowxOZIuk/RrST9z4pgAABzty2++1PH3Hx9z37Ibl+mCdhe4WxBwBKc6VQ9L+oWkxvFuYIwZIWmEJLVt29ahuwUAREHzB5prd9HumPvoSsEvUg5VxpjLJe2w1hYYYy6Idztr7QxJMyQpLy+PnwAAQI1KykpUb3K9mPtm/3C2huUOc7kioGZOdKrOlTTQGNNfUgNJxxljZltrr3Pg2ACAiDl/5vlasWVFzH10peBnKYcqa+1YSWMl6VCn6ucEKgBAMqy1ypgU+zp79110n8b+x1iXKwKS55t1qgAA0TPwqYH6+4d/j7mPrhSCxtFQZa1dLmm5k8cEAIRPvOUQ+p3STy8Me8HlagBn0KkCALji7lfu1v+s+p+Y+8rHl3OJMgQeoQoAkFbxulKtGrXSp6M/dbkaIH0IVQAAx/1i6S809R9TY+77etzXqn9MfZcrAtKPUAUAcAyXjkGUEaoAACmZtXaWbnruppj7Phv9mVo2auluQYBHCFUAgDqhKwVURagCACRsxZYVOn/m+TH3vXPrO8r9bq7LFQH+QagCANSKrhRQO0IVACCmj/d8rA6/7xBz3/NDn9dlp17mckWAvxGqAABV0JUC6oZQBQDQroO7dMLUE2Lu+23f3+rO79/pckVA8BCqACDC6EoBziFUAUDEFJcVq/7k2CuaX3zyxVp6/VKXKwLCgVAFABFBVwpIL0IVAISYtVYZkzJi7qufWV9f//JrlysCwotQBQAhRFcKcB+hCgBChDAFeIdQBQABV1OQKvnvEh2Twa96wA38pAFAQNGVAvyFUAUAAXLq70/VR3s+irlv15hdatawmcsVATiMUAUAAUBXCvA/QhUA+NRtz9+mPxb8Mea+d259R7nfzXW5IgA1IVQBgM/QlQKCiVAFAD4wa+0s3fTcTTH3zf7hbA3LHeZuQQCSRqgCAA/RlQLCg1AFAC77Z+E/1fOxnjH3jeo1Sg/3e9jligA4gVAFAC6hKwWEG6EKANLo8wOfq9VvWsXc16VFF62/bb3LFQFIF0IVAKQBXSkgeghVAOCQ4rJi1Z9cP+5+whQQboQqAEgRXSkAEqEKAOqMMAXgSIQqAEhCTUGqfHy5jIm/H0C4EaoAIAF0pQDUhlAFAHHUFKSKxhWpwTENXKwGgN8RqgDgKHSlANQFoQoAVHOQ2jxqs05qcpKL1QAIIkIVgEijKwXAKYQqAJHTd3ZfvfzJyzH3LbpmkQZ0HOByRQDCgFAFIDLoSgFIpwyvCwCAdJr25jSZiSZmoPr52T+XvdcSqAA4gk4VgFCiKwXAbYQqAKHxf1v+T+fNPC/mvq4tumrdbetcrghAlBCqAAQeXSl/W7imUFNf+kCf7itS6ybZGtO3owb3aON1WYDjCFUAAunzA5+r1W9axd1PmPKHhWsKNXb+ehWVlEmSCvcVaez89ZJEsELoEKoABApdqWCZ+tIHlYHqsKKSMk196QNCFUKHUAXA90rLS5X1q6y4+wlT/vXpvqKktgNBRqgC4Ft0pYKvdZNsFcYIUK2bZHtQDZBehCoAvkOYCo8xfTtWmVMlSdlZmRrTt6OHVQHpQagC4As1Bany8eUyJv5++NfheVOc/YcoIFQB8JRTXSlO2/evwT3a8FogEghVAFxXU5Dad9c+Hd/g+KSOx2n7APyAUAXANemaK8Vp+wD8gFAFIK3qT66v4rLimPvW3bpOXb/bNeX74LR9AH5AqAKQFm6ewcdp+wD8IMPrAgCEx7XPXisz0cQMVDMHzZS916ZlSYQxfTsqOyuzyjZO2wfgtpQ7VcaYEyU9IamlpHJJM6y1v0v1uACCw+t1pThtH4AfODH8VypptLX2bWNMY0kFxpil1tr3HDg2gDpwY3mBP+b/Ubctvi3mvhu73aiZg2c6en+14bR9AF5LOVRZaz+T9Nmhf39ljNkoqY0kQhXggXQvL+B1VwoA/MrRierGmHaSekh608njAkhcOpYXKPi0QHl/you5L8NkqGx8Wcx9ABAljoUqY0wjSc9KutNa+2WM/SMkjZCktm3bOnW3AI7i5PICdKUAIHGOhCpjTJYqAtUca+38WLex1s6QNEOS8vLy+G0MpEmqywvsKdqjZg80i7ufMAUAsTlx9p+R9GdJG621D6VeEoBUjOnbscqcKimx5QXoSgFAapzoVJ0r6XpJ640xaw9tu8dau8SBYwNIUjLLC5TbcmVOyqy2/TDCFAAkzomz/1ZKiv8nLgDX1ba8AF0pAHAel6kBIoQwBQDpQ6gCQq6mIFX636XKzIg//OcmNxYsBYB0IlQBIRWkrlS6FywFADcQqoAQqSlI7fj5Dp1w7AkuVpO4dCxYCgBuI1QBIRCkrlQsTi5YCgBeIVQBAXXSwydp6/6tMfetvHmlzm17rssV1V2qC5YCgB8QqoCACXpXKpa6LlgKAH5CqAICYOSSkZr+z+kx903rN00je410uSJnJbNgKQD4FaEK8LF0daX8uHxBbQuWAoDfEaoAn1n0wSINenpQzH0DTh2gRUMXpXR8li8AgPQgVAE+4dZcKZYvAID0IFQBHtq0d5O+N+17Mfc1rtdYX4790vH7ZPkC+JUfh6WBZBCqAA94eQYfyxfAjxiWRhhkeF0AEBUHSw7KTDRxA5W917qyJMKYvh2VnVX1en8sXwCv1TQsDQQFnSogzfy2rhTLF8CPGJZGGBCqgDSw1ipjUvxGsNeLdLJ8AfyGYWmEAaEKcJDfulJAULCqPsKAUAU4gDAFpIZhaYQBoQqoo5qCVPEvi5WVmeViNUDwMSyNoCNUAUmiKwUAiIVQBSSg2QPNtKdoT8x9n4/+XN9t9F2XKwIA+A2hCqgBXSkA8B+/rr5PqAKOct386zRn/ZyY+9788Zvq2aanyxUBAA7z8+r7hCrgELpSAOB/fr4oPJepQaQ9vubxuJeOeWzAY65dOgYAkBg/r75PpwqRRFcKAILJz6vvE6oQGW8VvqVej/WKue+/8v5Lj1z2iMsVAe765cL1eurNbSqzVpnGaGivEzV5cFevywKS4ufV9wlVCD26UkBFoJq9emvl12XWVn5NsEKQ+Hn1fWOt+x8qeXl5Nj8/3/X7RXTsOrhLJ0w9Iea+Dt/poA9HfuhyRYC3vjd2icpi/L7PNEafTOnvQUVAcBhjCqy1ebXdjk4V6sSva4TQlQJiixWoatoOIHmEKiTNb2uElJSVqN7kenH3E6aAio5UvE4VAGcQqpA0v6wRQlcKbvFrZzYZQ3udWGVO1ZHbATiDUIWkeb1GCGEKbvJbZ7auDk9Gj9LZf2EIwwgWQhWS5sUaITUFqfLx5TIMYSBN/NKZdcLkwV1DHaKOFJYwjGBhRXUkbUzfjsrOyqyyLV1rhMRb7VxS5WrnBCqkk9edWdRNTWEYSBc6VUhautcIOfX3p+qjPR/F3PfNL79Rvcz4k9IRPH4fovHz6s2IjzAMLxCqUCeDe7Rx/IOPuVLRE4QhGj+v3oz4CMPwAsN/8NSU/5sSd4hvx893cEHjkAvCEM3gHm005YquatMkW0ZSmybZmnJFV9+EPsTm5jQF4DA6VfAEXSlIwRmiSUdnFunl50uZILwIVXDN/I3zdeXcK2Pu+2jkRzrlO6e4XBG8xhAN0okwDLcRqpB2dKUQD/OVnOf3if9AmBGqkBart6/W2X8+O+a+5Tcu1/ntzne5IvgRQzTO8uvEf4IeooJQBUfRlUKyGKJxjh8XKvVr0APSgVCFlG3bv01tH24bc9+0ftM0stdIlysKNv6qR135ceK/H4MekC6EKtQZXSnn8Vc9UuHHif9+DHpAurBOFZJysORg3HWlftzjx6wrlaJ0rNu0cE2hzr3/NbW/e7HOvf81LVxTmGqZ8Ck/rs0UL9BxhifCiE4VEkJXyh1O/1VP5ytaapv478XQMmd4IkoIVYir3JYrc1JmzH1XdbpKf7v6by5XFH51Gb6p6YOS+SzRE2/iv1cBmzM8ESWEKlTT4fcd9PGej2PuoyuVXsn+VV/bB2U657MwoT5YvAzYnOGJqCBUoVK8Ib62x7fVlju3uFxNNCX7V31tH5TpmrjMsGLwMGEcSD9CVcQNmz9MT65/Mua+8vHlMib+XCqkRzJ/1df2QRmv83XhaSfo3Ptfq3OXiWHF4PHjmYFA2BCqIipeVyrTZKp0fKnL1aCuavugjNX5uvC0E/RsQWFKXSa6HsHDhHEg/QhVEfKXNX/R8EXDY+775pffqF5mPZcrQqoS+aA8uvN17v2vpdxlousRPEwYB9KPUBUBYVoOgcnRVdXlg9KJLhNdj2BiwjiQXoSqkHrtX6+pzxN9Yu7b84s9aprd1OWKUuenydF+CnfJflA60WWi6wEA1RGqQiZMXamj+WVytJ/CXV041WWi6wEAVRGqQuCj3R/p1OmnxtxX+LNCtW7cOuFj+akDczQ3Jkcn8vj9Eu7qii4TAKSHI6HKGNNP0u8kZUp6zFp7vxPHRc2c7kr5vQOT7snRiT7+MJz5RpcJAJyX8gWVjTGZkh6R9ANJnSQNNcZ0SvW4iG3Hv3fEvaDxhts2pHRB43RczNdJ6b5YbKKPnwvEAgBicaJT1VPSx9baTZJkjHla0iBJ7zlwbBzS/IHm2l20O+Y+p+ZK+b0Dk+5hq0Qfv5/PfIs1fCkx1AcAbnAiVLWRtO2Ir7dL6nX0jYwxIySNkKS2bdsOHXHLAAAdvElEQVQ6cLfhV1RSpIb3NYy5b/Utq9Urp9rTnJIgrD2UzmGrRB+/X+ckxRq+HPO3dyQjlZTZym1+GtIFgDBxIlTFmthTrXVirZ0haYYk5eXlBfs0tDS75blb9Pjax2PuS+cZfH7uwLghmcfvxzlJsYYvS8qrv1/8OqnezydJAEAinAhV2yWdeMTXOZI+deC4kVJWXqZjfhX75Vh0zSIN6Dgg7TX4tQPjlqA//mSGaf0ypHuY30+ScAvBEgg2J0LVPyV1MMa0l1Qo6RpJ1zpw3EiYuHyiJrw+Iea+RLpSTv8S9mMHxk1Bfvzxhi/j3dZPgr5MhRMIlkDwpRyqrLWlxpg7JL2kiiUVHrfWvptyZSFmrVXGpNgnXs67ep6u7HRlQsfhlzCOFGv4MivDVJlTJflzSNfvJ0m4gWAJBJ8j61RZa5dIWuLEscJs8YeLdflTl8fcV5e5UvwSxpEOv+YTFr2rfUUlkqRGDY7RZbmttOz9nb4eUgrCSRLpRrAEgo8V1V0Qb5HOR/o/ov8667/qfFx+CccX5bkp35SWV/5778ESPVtQqClXdPX144/6SRISwRIIA0JVmvxj2z907uPnxtxXPr5cxsRfDT1R/BKOLcrDokHtXgb9JIGj1SXUEyyB4CNUOSxzUqbKbXm17TMun6H/PPM/Hb0vfgnHFtRg4YQgdy/dOEnAjQ5mXUN92IIlEEWEKge8u+NddflDl5j7Sv67RMdkpOdp5pdwbEEOFqmiexmfWx3MVEJ9kM8+BUCoSkmH33fQx3s+rrZ98oWTNe68ca7UwC/h6qIcLOhexudWBzPKoR6IOkJVkrbu36qTHj4p5r6icUVqcEwDlyvC0aIcLOhexudW2IlyqAeijlCVoD5P9NFr/3qt2vbbz7pd0/tP96AixBP1YEH3Mja3wk6UQz0QdYSqGuw6uEsnTD0h5r69d+1VkwZNXK4IiSJY4GhuhZ2oh3ogyoy17l/bOC8vz+bn57t+v4m6ceGNeuKdJ6ptH3zaYC340QIPKgLgBC/WL4vymmlAWBhjCqy1ebXdjk7VIQeKD6jxlMYx9336s0/VqnErlysC4DS3O5hRXjPtSARLREXkQ9X4ZeP1qxW/qrb9jFZnqGBEgQcVAf7n1Ydk0D6co7xm2mEES0RJJENVuS3XhOUTYoapD+/4UB2adfCgKiAYvPqQDOKHM8srECwRLZEKVR/t/kgXzrpQhV8VVtnevGFz7Ryz06OqgGDx6kMyiB/OLK9AsES0ZHhdQLpZa/XAqgdkJhqdOv3UykB1ycmXaM8v9sjeawlUQBK8+pAM4ofzmL4dlZ2VWWVb1JZXiBcgoxQsER2h7VRt279NfWf31cZdG6tsn3PFHF3b9VqPqgKCz6vuSxC7PiyvwLpdiJbQhqq2D7et/Pf3c76vhT9aqO82+q6HFQHh4NWHZFA/nKO+ZhrBElES2lD154F/Vll5mf7zzP/0uhQgVLz6kHTrfoN2hmEQRD1YIjpY/BMADjn6DEOpohs25YquhAIgwlj8EwgQuiP+EMQzDAH4B6EK8FgQ118KqyCeYQjAP0K/pALgdzV1R+AuTv8HkApCFeAxuiP+wbpSAFJBqAI8RnfEPwb3aKMpV3RVmybZMpLaNMlmkjqAhDGnCnXCxGrnBHX9pSBJ5v3K6f8A6opQhaQxsdpZYVoc0Y9hm/crALewThWSdu79r8W8XEibJtladfdFHlQEP/DrGk+8XwGkKtF1qphThaQxsRqx+PUsRt6vANxCqELSmFiNWPwaXni/AnALoQpJ47RzxOLX8BK09+vCNYU69/7X1P7uxTr3/te0cE2h1yUBSBChCknjtHPE4tfwEqT36+F5aYX7imT17aR6ghUQDExUB+AYP579FyRMqgf8iQsqA3BdUNZ48mv48+u8NACJYfgPQKT4eYjNr/PSACSGUAUgUvy69IPk33lpABLD8B+ASPHzEFuYVtcHoohQBSBSWjfJjjkZ3C9DbEGZlwagOob/AEQKQ2xAOBw8eFBerGBQE0IVgEgJ0rpVQNR98803evnllzVq1Ch16NBBxpjK/4499lgNGTLE6xKrYPgPQOQwxAb4R2lpqd544w0tWbJEixcv1vr16xP+3lGjRqWxsuQRqgAAQFqVl5eroKBAS5Ys0ZIlS/TWW28l/L29e/fWZZddpssuu0xdunSRMSaNlaaGUAUAAFJmrdV7772nxYsXa/HixVqxYkXC35uXl6f+/furf//+ysvLU2ZmZu3f5EOEKgBIkV9XaAfS4ZNPPqnsOL344osJf1+XLl0qg9M555yjrKysNFbpDUIVAKTg8ArthxcUPbxCuySCFQKrsLCwMjgtWbJExcXFCX3fySefXDlUd9555yk72x9LlbiFUAUAKahphXZCFfxs165deuGFFyqD05dffpnQ97Vu3bqy43TxxRercePGaa40OAhVAHCEZIfy/LxCO/Dll19q6dKllfOcduzYkdD3fec736kMTpdeeqmaNWuW5krDgVAFAIfUZSjP7yu0I/wOHjyoZcuWVXacNm/enND3NWjQoHKorl+/fmrVqlV6C40AQhUAHFKXobwxfTtWCWISK7TDecXFxVq5cqUWL16sJUuW6P3330/4ew93nPr376/27dunsUoQqjzAmUKAP9VlKI+LIMMpxcXFmj59ukaPHp3091500UWVwem0007z9VpOYUaochlnCgH+VdehPFZoR6LKy8s1c+ZM3XHHHSoqSm7eXbdu3XT11Verf//+6tatmzIyuNKc3/CKuKym4QUA3uJiy3CCtVYLFixQ69atq1yrzhijzMxM3XLLLbUGqgcffFDffPONrLWV/61du1bjxo1Tjx49CFQ+RafKZZwpBPgXQ3lIxooVK3T77bdrw4YNdfr+sWPHauzYsSxJECKEKpdxphDgbwzl4UgvvfSS+vXrV+fvv+222zRp0iQ1b97cwargV/QPXcbwAgD4yyuvvFJtmO7wf4kEqmuuuUZbtmypMlR3+L9HH32UQBUhdKpcxvACALjvnXfeUffu3VM6xmuvvaYLL7zQoYoQRoQqDzC8AADOW79+vXJzc1M6xjPPPKMhQ4Y4VBGihlAFAAiMzz//POWVv0eOHKlp06Y5VBHwLUIVAMBXDh48qGOPPTbl45SWliozM7P2GwIOSWmiujFmqjHmfWPMOmPMAmNME6cKAwCEV1lZWdzJ4ckEqq+++irmBHFrLYEKrkv17L+lkrpYa3MlfShpbOolAQDCIl5wOuaYxAdKtm/fHjc4NWrU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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#final regression/ classification line\n", + "fig = plt.figure(figsize=(10,8))\n", + "ax = fig.add_subplot(1,1,1)\n", + "ax.scatter(df_new1[0],df_new1[1], label = '1')\n", + "\n", + "plt.scatter(df_new2[0],df_new2[1], label = '0')\n", + "\n", + "plt.plot(X.T[0],y_init,'g', label = 'initial model line')\n", + "plt.plot(X.T[0],y_new,'black', label = 'final model line')\n", + "\n", + "plt.legend()\n", + "plt.show()\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/binary_logistic_regression/ML_2_lr_001.png b/binary_logistic_regression/ML_2_lr_001.png new file mode 100644 index 0000000000000000000000000000000000000000..4425de3041589fd379485869a14f5a81720df110 GIT binary patch literal 15979 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 T+Ys)vZwPi@Tcu3tVaWdlC;~{k literal 0 HcmV?d00001 diff --git a/binary_logistic_regression/data.txt b/binary_logistic_regression/data.txt new file mode 100644 index 0000000..1ce3a83 --- /dev/null +++ b/binary_logistic_regression/data.txt @@ -0,0 +1,100 @@ +1.3 -0.54 1 +-2.3 -2.5 1 +-0.37 -0.047 1 +0.49 0.79 1 +1 0.95 1 +-1.9 -1.7 1 +0.61 -0.3 1 +1.4 1.4 1 +-0.53 0.43 1 +-1.1 0.14 1 +0.64 -0.52 1 +-0.76 0.11 1 +1.3 2.4 1 +0.93 0.52 1 +0.095 -0.11 1 +0.44 -0.74 1 +-0.26 -2.3 1 +2.8 1.1 1 +1.3 0.49 1 +0.1 1.7 1 +0.57 -1.5 1 +-1.5 0.05 1 +-0.32 -0.049 1 +0.19 -0.58 1 +-1 -0.26 1 +-0.35 2 1 +-0.4 0.31 1 +-1.7 -0.17 1 +1 0.35 1 +-0.56 -0.82 1 +-0.054 -1 1 +0.35 -0.31 1 +1 0.96 1 +0.44 -1.6 1 +0.26 2.2 1 +-0.36 -0.23 1 +-0.86 0.05 1 +-0.27 1.5 1 +-0.27 0.22 1 +0.75 -0.14 1 +1.6 0.76 1 +0.76 -1.1 1 +0.33 -0.95 1 +-1.4 -0.96 1 +-0.11 -0.56 1 +0.37 -1.2 1 +0.076 0.69 1 +-1.4 0.85 1 +-0.1 0.27 1 +-0.32 0.38 1 +-0.68 -4.6 0 +-0.6 -4.8 0 +-0.49 -3.9 0 +-0.21 -5.4 0 +0.057 -5.4 0 +-1.1 -5.1 0 +-1.8 -4.4 0 +-0.67 -5.7 0 +0.29 -4.7 0 +-0.41 -4.2 0 +1.8 -4.5 0 +0.93 -4.5 0 +0.74 -5.4 0 +-1.2 -4.8 0 +0.84 -5.8 0 +0.21 -3.8 0 +0.5 -5.3 0 +-0.21 -5.9 0 +-0.11 -4.4 0 +0.16 -2.9 0 +-0.52 -3.8 0 +0.42 -6.2 0 +1.1 -4 0 +-0.5 -5.1 0 +0.45 -4.6 0 +-0.24 -4.6 0 +-1 -4.3 0 +0.95 -5.5 0 +-2.2 -5.6 0 +-1.3 -4.4 0 +-1.6 -4.8 0 +2.1 -5.6 0 +0.86 -5.5 0 +0.16 -5 0 +-1.2 -4.9 0 +-0.082 -5.9 0 +0.078 -6.2 0 +1.1 -4.9 0 +-1.2 -3.6 0 +-0.2 -4.8 0 +-2.2 -4.5 0 +-0.75 -4.2 0 +-1.6 -5.3 0 +1.6 -4.8 0 +0.34 -4.6 0 +1.2 -4.3 0 +1.3 -6.4 0 +-0.96 -3.9 0 +1.7 -2.8 0 +-0.77 -4.5 0