From 6ec8a3788dd4f977d5caeb35abfeef6a80f27f89 Mon Sep 17 00:00:00 2001 From: Charles Date: Sun, 26 Jan 2020 10:42:37 +0100 Subject: logistic regression one vs all explaination --- logistic_regression_notebook.ipynb | 381 +++++++++++++++++++++++++++---------- 1 file changed, 281 insertions(+), 100 deletions(-) diff --git a/logistic_regression_notebook.ipynb b/logistic_regression_notebook.ipynb index cd9f013..9a9645a 100644 --- a/logistic_regression_notebook.ipynb +++ b/logistic_regression_notebook.ipynb @@ -6,7 +6,7 @@ "source": [ "# Logistic Regression\n", "\n", - "Logistic regression is a *classification algorithm*." + "Logistic regression is a *binary classification algorithm*." ] }, { @@ -17,7 +17,7 @@ { "data": { "text/plain": [ - "Text(0.5, 1.0, 'Data representation')" + "Text(0.5, 1.0, 'Data')" ] }, "execution_count": 1, @@ -26,7 +26,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -57,25 +57,32 @@ " sep = False\n", " elif x_0 < x_1:\n", " sep = False\n", + " \n", + "X = np.hstack([X, np.ones((X.shape[0], 1))])\n", + "\n", " \n", "X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.33)\n", "\n", - "plt.scatter(X, Y, s=10, c='b')\n", + "plt.scatter(X[:, 0], Y, s=10, c='b')\n", "plt.xlabel('feature')\n", "plt.ylabel('groups')\n", "plt.yticks([0, 1])\n", - "plt.title('Data representation')" + "plt.title('Data')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Model\n", + "## Binary target\n", + "\n", + "### Sigmoid function\n", "\n", "We have to fit a **model** trough our data. \n", - "A *sigmoid* (also called *logistic*) function is used:\n", - "$$\\sigma(x) = \\frac{1}{1 + e^{-x}}$$\n", + "The *sigmoid* (also called *logistic*) function is used:\n", + "$$\\boxed{\n", + "\\sigma(x) = \\frac{1}{1 + e^{-x}}\n", + "}$$\n", "\n", "It produce an 'S' shape like function that stays between 0 and 1" ] @@ -85,16 +92,6 @@ "execution_count": 2, "metadata": {}, "outputs": [ - { - "data": { - "text/plain": [ - "Text(0.5, 1.0, 'Sigmoid function')" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEICAYAAACktLTqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl4VPXd9/H3NzuQkECAsBP2VVEWcaUgqOBSeLzrdqNWrXVp1dr2aSt1abWXt21vt7q0PtyK2+1aSilVSxUxdUGRXfZ9C4YlCYSErDPze/6YwQYIkISZnJnJ53Vdc2WWM+d8JiSf/PjNmXPMOYeIiMSXBK8DiIhI+KncRUTikMpdRCQOqdxFROKQyl1EJA6p3EVE4pDKXZqMmU0xs/ejbbtmlmdmNx/jMTOzF81sn5l9GbmUdW77H2b23abcpsQP037uEk5mdi7we2Aw4AfWAHc75xZ6Guw4zCwP+F/n3PN1PHYe8AbQ3zl3MIIZfg30cc5dG6ltSPOS5HUAiR9m1hp4B7gdeBtIAc4DqrzMdZJ6AFsjWewikaBpGQmnfgDOuTecc37nXIVz7n3n3FcAZnaDmX16aGEzu9DM1plZiZn90cz+dWh6JLTsZ2b2hJntN7PNZnZ26P4dZran9pSFmWWa2StmttfMtpnZfWaWcIztXmBma0PbfQawul6MmX0PeB44y8zKzOzBI9cVWs6ZWZ/Q9ZfM7Fkze9fMSs1sgZn1rrXsYDP7wMyKzWy3mf3SzCYAvwSuCm1neWjZb6aLzCwh9Jq2hV77K2aWGXosN5Thu2a23cwKzezeRv8rSlxQuUs4rQf8ZvaymU00szbHWtDM2gEzgKlANrAOOPuIxUYBX4Uefx14ExgJ9AGuBZ4xs/TQsk8DmUAv4FvA9cCNx9juTOA+oB2wCTinrozOuReA24DPnXPpzrlfnegbEHI18CDQBtgIPBzadgYwF5gDdA69jg+dc3OA/wLeCm1naB3rvCF0GRt6jenAM0cscy7QHxgHPGBmA+uZV+KQyl3Cxjl3gGDBOOB/gL1mNtvMcupY/GJglXNupnPOBzwF7DpimS3OuRedc37gLaAb8JBzrso59z5QDfQxs0SChTrVOVfqnNsKPAZcd5ztznDO1QBP1rHdk/VX59yXodf1GnBa6P5LgV3Oucecc5WhrAvquc4pwOPOuc3OuTKCfxSvNrPaU6sPhv63tBxYDtT1R0KaCZW7hJVzbo1z7gbnXFdgCMER6pN1LNoZ2FHreQ7IP2KZ3bWuV4SWO/K+dIIj8GRgW63HtgFd6rndHXUsdzJq/7EoD2WE4B+nTY1cZ2eOfn1JQO0/nMfarjRDKneJGOfcWuAlgiV/pAKg66EbZma1bzdQIVBD8M3PQ7oDO4+x3W5HbLdbHcsdy0GgZa3nd2zAc3cQnFKpy4l2W/uao1+fj8P/AIp8Q+UuYWNmA8zsp2bWNXS7G3AN8EUdi78LnGJmk0NTCz8EGlKU3whN27wNPGxmGWbWA/gJ8L/H2O5gM7s8tN27Grjd5aHnn2ZmacCvG/Dcd4BOZna3maWGso4KPbYbyD30JnAd3gB+bGY9Q+8zHJqj9zVg+9KMqNwlnEoJvgm6wMwOEiz1lcBPj1zQOVcIXEFwn/giYBCwiMbvNnknwVH1ZuBTgm/ATj/Odn8b2m5f4LP6bsQ5tx54iOAboxtC26rvc0uBC4DLCE6hbCD4BinAn0Nfi8xsSR1Pnw68CnwMbAEqCb5mkTrpQ0wSFUIj1nxginPuI6/ziMQ6jdzFM2Z2kZllmVkqwf28jbqncESkgVTu4qWzCO49UkhwqmKyc67C20gi8UHTMiIicUgjdxGROOTZgcPatWvncnNzI7b+gwcP0qpVq4itP9KU3zuxnB2U32uRzr948eJC51z7Ey3nWbnn5uayaNGiiK0/Ly+PMWPGRGz9kab83onl7KD8Xot0fjPbduKlNC0jIhKXVO4iInFI5S4iEoei6kxMNTU15OfnU1lZedLryszMZM2aNWFI5Y2mzJ+WlkbXrl1JTk5uku2JSORFVbnn5+eTkZFBbm4uwYP1NV5paSkZGRlhStb0miq/c46ioiLy8/Pp2bNnxLcnIk3jhNMyZjY9dFqvlcd43MzsKTPbaGZfmdmwxoaprKwkOzv7pItd6s/MyM7ODsv/lkQketRnzv0lYMJxHp9I8Mh6fYFbgD+dTCAVe9PT91wk/pxwWsY597GZ5R5nkUnAK6Ez2nwROhBUJ+dcQZgyiohEBeccvoCj2heg2hegxh+gKvT10P2b9/tJ31pMjd/hDzh8gQA+f/B5h24HnMPndwScwx8Av3MEQo8H73MEHARC9x+63pDDxYRjzr0Lh5+mLD9031Hlbma3EBzdk5OTQ15e3mGPZ2ZmUlpaGoZI4Pf7w7YuLzR1/srKyqP+PU5GWVlZWNfXlGI5Oyj/Ib6A42ANHKxxlPscFTWOCj9U1Dgq/VDpc1T4oMrvqPL/+2u131Hjh6pA8GtNAGpqXa9XvX7x+UnnP1lN+oaqc24aMA1gxIgR7shPca1ZsyZsbyLqDdWGSUtL4/TTTw/b+mL5U4axnB3iN79zjgOVPvYcqGT3gSp2H6hkb1kVRWVVFJZVU1hWxb7yavYdrGFfeTXl1f4Tbis1KYFWqUm0TEmkZUoiLdISaZuSSIvkRNJCl9SkBNKSE0lJSiA1KYGUxARSkv59SU4IfU1MICnRWLNqJcNOG0pSopGUkBD6aiQmBG8HvwZvJyQYiWYkJECiHX5fYoJhBglmoUtwCtV+V7/vYzjKfSeHn4OyK3Wfu1LCaPPmzTz88MOUlJQwY8YMr+OIhEVFtZ9tB/z8Y0UB24vL2V5cTv6+Cr7eH7wcrKOw05ITaJeeSnarFNqnp9KvQwZZLVNo0zKZ1i2SyWyRTOsWSbROSyYjLZmMtCRapSbRKiWRpMTwf9Qnde9aRvc74aFfIi4c5T4buMPM3iR4irUSzbdHXq9evXjhhRf4zne+43UUkQarqPazbncp63eVsnZXKRv2lLJpTxlfl4T22pofPNNgVstkurZpQa/2rTi3bzs6Z7YgJzONnIxUclqn0S4jlVYpidopoA4nLHczewMYA7Qzs3zgV0AygHPuOeA94GJgI1AO3BipsF6rqKhgwoQJzJs3j8TExDqXqa6uZvz48cybN4+kpKj6GIGIJ3z+AGt3lbJ42z6+yi9h5c4SNuwpJRCavE5LTqBvhwxG9cqmV7tWVOzdxiWjR9KtbUtap+mDdY1Vn71lrjnB447gmevj3vTp07n88suPWewAKSkpjBs3jrfeeospU6Y0YTqR6FDjD7B8x37mbyrii81FLNux/5v573bpqZzSpTUXDc5hUOdMBnTMoFvbliQm/HvknZe3k8GdM72KHzc0tKzD8uXLufPOOyksLGTt2rU457j//vuZO3cur7/++jfLjR07ll/+8pdccMEF3HfffZSUlPD0008zefJkpk6dGtFyLyoq4t5772Xp0qU88sgjTJ06NWLbEjmRgpIK5q3dw7w1e/hicxEHq/2YwcCOrblieFeG57ZleI82dM5M0xRKE4nacn/w76tY/fWBRj/f7/cfNcIe1Lk1v7ps8HGfV1lZyVVXXcUrr7zCGWecwf33309lZSX33nsv06ZNo/YJRh588EEeeOAB9uzZw9KlS5k9ezYAQ4YMYeHChUet+7zzzqtz98ZHH32U8ePHN+j1ZWdn89xzzzXoOSLhtLXwIO+uKOC9FQWsCv2udmvbgv8zrAvn9G7Hmb2yadMqxeOUzVfUlrtX5s6dy7BhwzjjjDMAOPXUU5kzZw5FRUVkZWUdtuzo0aNxzvH444+Tl5f3zR+TxMREUlJSjtqd8ZNPPmm6FyISAUVlVfx16U5mLdvJyp3BQh/WPYt7Jg5g3IAO9OmQrpF5lIjacj/RCPtEGruf+MqVKznllFO+ub1kyRKGDRtGixYtjjr+yooVKygoKCA7O/uobVVVVZGWlnbYffUZuTflL4ZOji71EQg4Pt6wlze/3MHcNbvxBRxDu2Zy3yUDufiUTnTOauF1RKlD1Ja7V7Kzs5k3bx4A69evZ+bMmcyfP582bdrg9/uprKwkLS2NgoICpkyZwt/+9jfuuusu5syZw4QJwUPwFBUV0a5du6MOoVufkfuhwg33h5jmzp1LcXExRUVF3H777WFbr8Svg1U+Zi7J58XPtrK58CDZrVK48ZxcrhjRjX45sfsBweZC5X6Ea665htmzZzNkyBDatWvHG2+8QXZ2NgAXXnghn376KWeffTaXX345jz32GAMHDuT+++/nF7/4xTfl/tFHH3HJJZc0avuHPpxUVFTErFmzjnp8xYoVZGZm0r179+OuZ9asWd88f+LEiVx88cVcdNFFfPbZZ43KJc3H/vJqpn+2lZc+28KBSh9Du2byh6tPY+KQTqQk6fw+sULlfoT09HT+/ve/1/nYD3/4Q5544gnGjx/P55//+9gRo0ePPuz266+/zm9/+9tGbf/Qh5MmT55c5+OLFy8mNzf3sHKvqanhV7/6FeXl5QQCAZ566ikmT578zToCgQAPP/wwP/vZz1i0aBEjR45sVDaJb/sOVvP8p5t5ef42yqp8XDQ4h1tG92ZY9yzNo8cglXsDDBs2jLFjx9a5J84h1dXVTJ48mX79+oV126tXr+app55i3bp1ZGRk8Oabb/Lggw+Sk5PDtGnTqKioICsriy1bthz13ISEBO6///6w5pH4UeXz8/L8rTw9byNlVT4uHtKJO8f1YUDH1l5Hk5Ogcm+gm2666biPp6SkcP3114d9u4MGDeK5557jpZdeIjc397ADKy1dupRnn32W1NTUsG9X4pdzjndXFPDbf6wlf18FY/q3Z+rEgfTvqPn0eKAJtChTVFTEbbfdxvLly3nkkUfq9ZxJkyZxww038POf/5w5c+ZEOKHEg+1F5Vw//UvueH0p6alJvPq9M3jpxjNU7HFEI/coc+jDScfaW+aGG2446r7LLruMyy67rAnSSayr8Qd44dMtPDl3PUkJCTz47cFce2aPwz7+L/FB5S7STGwpPMjdby1j+Y79XDQ4h19/ezCdMrWPerxSuYvEOeccby3cwUPvrCY5MYFn/3MYl5zayetYEmEqd5E4VlpZw89nfMU/Vu7i7N7ZPHblUI3Wm4moK3fnnPapbWI6DEF82rinlFteXcy2onKmThzA98/rRYLm1puNqCr3tLQ0ioqKyM7OVsE3EeccRUVFRx0HR2LbnJW7+Onby2iRkshrN4/izF7ZXkeSJhZV5d61a1fy8/PZu3fvSa/r0DFgYlVT5k9LS6Nr165Nsi2JLOcc72yqZsacxQztlsVz1w7TNEwzFVXlnpycTM+ePcOyrry8PE4//fSwrMsLsZ5fmp7PH+BXs1cxY0MNk07rzO+/cyqpScc+a5jEt6gqdxFpnPJqH3e9sZS5a/ZwSc9knrjyNM2vN3Mqd5EYV1pZw40vLmTJ9n38ZtJgulVtVbGLDj8gEssOVNZw/fQvWbZjP09fM4zrzsr1OpJECY3cRWJUSXkN109fwOqCAzw7ZRgXDe7odSSJIip3kRh0oLKGa19YwLpdpTx37XDGDczxOpJEGZW7SIyprPFz80uLWLvrANOuG8HYAR28jiRRSOUuEkNq/AHueH0JC7cV89TVp6vY5Zj0hqpIjAgEHL+Y8RVz1+zhoUlDuGxoZ68jSRRTuYvEiP9+fx0zl+7kpxf047oze3gdR6Kcyl0kBsxYnM+f8jZxzRndueP8Pl7HkRigcheJcgu3FjN15lec3TubhyYN1kH1pF5U7iJRbEdxObe+upiubVryxynDSE7Ur6zUj35SRKJURbWf77+yCJ8/wAvfHUFWyxSvI0kM0a6QIlHIOce9s1awbncpL94wkl7t072OJDFGI3eRKPTWwh3MXLKTO8/vy5j+2pddGk7lLhJlVu4s4YHZqzivbzt+NK6v13EkRqncRaLIgcoafvDaErJbpfDkVaeRqEP3SiNpzl0kijwwayU791fw9q1nkp2e6nUciWEauYtEib8t28msZV9z5/l9GN6jrddxJMap3EWiwM79Fdw3ayXDumdxx1h9AlVOnspdxGP+gOMnby0jEHA8edXpJOmDShIGmnMX8djzn2xmwZZiHr1iKN2zW3odR+KEhggiHtq0t4zHPljPRYNz+I9hXbyOI3FE5S7ikUPHZ2+RnMhvJg/RAcEkrFTuIh555fOtLNq2jwcuHUSHjDSv40icUbmLeGBHcTm/m7OOb/Vrz+WajpEIULmLNDHnHPfM/IrEBOO/Lj9F0zESESp3kSY2e/nXfLaxiF9M6E+XrBZex5E4pXIXaUIlFTX85p01DO2ayX+O0nlQJXK0n7tIE3r8/XUUH6zixRtG6qBgElEauYs0kRX5Jbz6xTauO7MHp3TN9DqOxDmVu0gT8Acc981aQdtWqfzkwv5ex5FmQOUu0gTeXrSD5fkl3H/pQDJbJHsdR5oBlbtIhB2orOHRf67jjNy2fHtoZ6/jSDOhN1RFIuzpDzdQXF7Ny5cN0j7t0mQ0cheJoC2FB3lp/lauHN6NIV30Jqo0HZW7SAQ9/O5qUpMS+b8X6U1UaVoqd5EI+Xj9Xuau2cMd5/ehfYbOhypNS+UuEgH+gOPhd9fQI7slN56T63UcaYZU7iIR8Jcl+azbXcovJgwgNSnR6zjSDKncRcKsotrP4++v57RuWUwc0tHrONJMqdxFwmz6Z1vYdaCSqRMHaNdH8YzKXSSMisqq+FPeJsYPzGFUr2yv40gzpnIXCaOn522kvNrHPRO166N4S+UuEiY7ist5bcE2rhrZjT4dMryOI82cyl0kTJ6Yu54EM340rp/XUURU7iLhsGF3KX9dupPvnp1Lx8w0r+OIqNxFwuHxD9bTKiWJ277V2+soIoDKXeSkfZW/n3+s3MXN5/WkbasUr+OIACp3kZP26PvradMyme+d29PrKCLfULmLnIQFm4v4eP1efjCmDxlpOsOSRA+Vu0gjOed47IP1dMhI5bqzengdR+QwKneRRvp8UxFfbinmB2N6k5asg4NJdFG5izSCc44n5q6nY+s0rj6ju9dxRI6ichdphE83FrJw6z5+OFajdolOKneRBnLO8cQH6+mcmcaVI7t5HUekTip3kQb6eEMhS7bv5wdj++hEHBK1VO4iDXBo1N4lqwVXjtCoXaKXyl2kAT7eUMiyHfv5wdjepCTp10eil346RerJOccf5gbn2r8zvKvXcUSOS+UuUk/zNxWxZPt+bh/TW3PtEvVU7iL19IcPN5DTOpUrNNcuMUDlLlIPX2wOfhr19m9pv3aJDSp3kXp46sMNtM9I1adRJWao3EVOYNHWYuZvKuLW0b00apeYoXIXOYGn520ku1UKU0bpyI8SO1TuIsexfMd+/rV+Lzef14sWKRq1S+xQuYscxzMfbSSzRbKO1y4xR+UucgxrCg7wwerd3HROT9JTk7yOI9IgKneRY3jmo42kpyZxw9m5XkcRaTCVu0gdNu4p470VBVx/Vg8yW+rcqBJ7VO4idfhj3kbSkhL53rk9vY4i0ij1Knczm2Bm68xso5ndU8fjN5jZXjNbFrrcHP6oIk1jT3mAvy37mimjupOdnup1HJFGOeG7RGaWCDwLXADkAwvNbLZzbvURi77lnLsjAhlFmtR7m2tINOP7o3t5HUWk0eozcj8D2Oic2+ycqwbeBCZFNpaINwpKKvh0p48rR3Ylp3Wa13FEGq0++3d1AXbUup0PjKpjuf8ws9HAeuDHzrkdRy5gZrcAtwDk5OSQl5fX4MD1VVZWFtH1R5rye+O1NVUEnGNoyt6YzA+x+70/RPnDI1w77/4deMM5V2VmtwIvA+cfuZBzbhowDWDEiBFuzJgxYdr80fLy8ojk+iNN+ZteYVkVn3w4j7O7JHPFxUf9+MaMWPze16b84VGfaZmdQO0DWHcN3fcN51yRc64qdPN5YHh44ok0nRc+3UKVL8ClvbTro8S++pT7QqCvmfU0sxTgamB27QXMrFOtm98G1oQvokjk7S+v5tXPt3HJKZ3o2Ep7CEvsO+FPsXPOB9wB/JNgab/tnFtlZg+Z2bdDi91lZqvMbDlwF3BDpAKLRMJL87dSVuXjjvP7eB1FJCzqNefunHsPeO+I+x6odX0qMDW80USaRmllDdM/3cKFg3IY0LE1u9Z6nUjk5On/n9LsvfrFNg5U+rjz/L5eRxEJG5W7NGvl1T6e/2QLY/q355SumV7HEQkblbs0a68v2E7xwWru1Fy7xBmVuzRblTV+pn28mbN7ZzO8R1uv44iElcpdmq0/L9rBntIq7SEjcUnlLs1Slc/PH/M2MTK3DWf1yvY6jkjYqdylWZqxOJ+CkkruGtcXM/M6jkjYqdyl2an2BfjjR5s4vXsW5/Zp53UckYhQuUuz89el+ezcX6FRu8Q1lbs0KzX+AM98tJFTu2Yypl97r+OIRIzKXZqVWUt3sqO4grvO16hd4pvKXZoNX2jUPqhTa8YN7OB1HJGIUrlLszFz6U62FZXz4wv6adQucU/lLs1CjT/A0/M2cEqXTMZr1C7NgMpdmoW/LM5nR3EFP75Ac+3SPKjcJe5V+wI8PW8jQ7tlMba/Ru3SPKjcJe7NWBzcr/3u8Rq1S/Ohcpe4Vu0L8OxHGzm9e5b2a5dmReUuce3NhdvZub+Cn2gPGWlmVO4St8qrfTz14UbO7NVWx5CRZkflLnHr5fnbKCyr4mcX9deoXZodlbvEpZKKGp771ybOH9BBZ1mSZknlLnHp+U82U1JRw08v7Od1FBFPqNwl7hSWVfHCp1u49NRODO6c6XUcEU+o3CXuPDNvI5U1fn58gUbt0nyp3CWubCs6yGsLtnHVyO70bp/udRwRz6jcJa789z/XkZSQwI/H9/U6ioinVO4SN5bt2M87XxXw/dG96NA6zes4Ip5SuUtccM7xyHtraJeewi2je3kdR8RzKneJCx+t28OCLcX8aHw/0lOTvI4j4jmVu8Q8nz/AI++tpVe7Vlw9spvXcUSigspdYt7rX25nw54y7pk4gORE/UiLgMpdYtz+8moe/2A95/TJ5oJBOV7HEYkaKneJaU/O3cCBihruv3SQDg4mUovKXWLW+t2lvPrFNqaM6sGAjq29jiMSVVTuEpOcc/zmndW0SknUYQZE6qByl5j0werdfLKhkLvH96NtqxSv44hEHZW7xJzyah8P/n01/XMyuO6sHl7HEYlK+rSHxJynPtzIzv0V/Pm2s7Tro8gx6DdDYsr63aU8/8lmrhjelZG5OsOSyLGo3CVmOOe4b9ZKWqUmcc/EAV7HEYlqKneJGTOX7OTLLcXcM3EA2empXscRiWoqd4kJe0ur+M27qzm9exZXjdDxY0ROROUuMeHXs1dRXuXn9/9xKgkJ+iSqyImo3CXqzVlZwLsrCrhrXB/65mR4HUckJqjcJartL6/mvlmrGNSpNbd+q7fXcURihvZzl6j20Dur2V9ezcs3jdQ+7SINoN8WiVpzVu5i5pKd3Pat3gzunOl1HJGYonKXqLT7QCVTZ37FkC6tuWtcX6/jiMQclbtEnUDA8X//vJyKGj9PXnU6KUn6MRVpKP3WSNR5cf5WPtlQyH2XDKJPh3Sv44jEJJW7RJU1BQf43Zy1jBvQgSmjunsdRyRmqdwlapRW1vCD15bQOi2Z333nVJ02T+QkaFdIiQrOOe75ywq2F5fz2s2jaKdjx4icFI3cJSq8NH8r764o4GcX9efMXtlexxGJeSp38dzibft4+N01jB+Yw62je3kdRyQuqNzFU7tKKvnBa4vplJXGY1cO1Ty7SJio3MUz5dU+bn5lIWWVPv7n+hFktkj2OpJI3NAbquKJQMDxk7eWs+rrAzx//QgGdGztdSSRuKKRu3jisQ/WMWfVLu69eCDjBuZ4HUck7qjcpcm9vmA7z360iatHduN75/b0Oo5IXFK5S5N6b0UB985awZj+7Xlo0hC9gSoSISp3aTKfbijk7jeXMbx7G/40ZbgOCCYSQfrtkiaxdPs+bnl1Eb3at+KF746kRUqi15FE4prKXSJu8bZ9XP/Cl7RLT+WVm84gs6V2eRSJNJW7RNTCrcVc/8ICstNTeOvWM+nQOs3rSCLNgvZzl4j5YnMRN720kI6Zabzx/TPJUbGLNBmVu0TE4t0+ps39ku5tW/La90fRIUPFLtKUNC0jYffy/K08s7SKgZ1a8+YtZ6rYRTygkbuETSDg+N2ctfy/jzdzeodEXv/+mdorRsQjKncJiwOVNfzkreXMXbOba8/szvmZhSp2EQ9pWkZO2obdpUx+5jM+WreHBy4dxG8mDSFBnzwV8ZRG7nJS3vnqa34+4ytapiTy+s2jGKWzKIlEBZW7NEppZQ2/nr2avyzJ5/TuWfxpynA6ZuqNU5FooXKXBlu8rZi731rGzn0V3Hl+H+4a15fkRM3wiUQTlbvUW1mVj8feX8fL87fSOasFb996FiNy23odS0TqoHKXepm7ejcP/G0lBQcqmTKqO7+YMICMNB0jRiRaqdzluDbuKeWR99by4do99M/J4On/HMbwHm28jiUiJ6BylzoVlVXx5NwNvP7ldlomJzJ14gBuOren5tZFYoTKXQ5TVFbFtE828+rn26jyBZgyqjs/GteX7PRUr6OJSAOo3AWAgpIKXvxsK69+vo1Kn5/LTu3MXeP60qdDutfRRKQRVO7N3NLt+5j+2VbeW1GAc45Jp3Xhh2P7qNRFYpzKvRkqqahh9rKdvL0onxU7S8hITeKmc3K5/qxcurVt6XU8EQkDlXszUeXz8/H6Qv6+/Gv+uWoXVb4AAzu15qFJg7l8WFfSU/WjIBJP9Bsdx8qqfHy6YS/vr97NB6t2U1rlI6tlMleO6MZVI7sxpEum1xFFJEJU7nEkEHCs213KZxsL+df6vXyxuYgav6N1WhIThnTk0qGdObt3tnZnFGkGVO4xzOcPsKaglEXbilm0dR9fbC6i6GA1AL3at+LGc3py/oAODO/RRoUu0syo3GNEjT/AlsKDrNxZwsqdB4Jfvy6hvNoPQOfMNL7Vrz1n92nH2b2z6ZzVwuPEIuIllXuUKa/2sbWwnC8LfHyfS+NHAAAG/ElEQVT14QY27ilj/e5SNu0to8bvAEhLTmBQp9ZcOaIbw3u0YXiPNipzETmMyr0JBQKOooPV7D5Qye4DlXy9v4KvS4JfdxSXs724gsKyqlrPWE+XrBb0y0lnTP8O9O+YzqBOmfRu34okTbOIyHHUq9zNbALwByAReN4599sjHk8FXgGGA0XAVc65reGNGl2qfQHKqnyUVtZQUlHDgQofJRU17K+oZt/BavaV17DvYDWFB6spLK2i6GAVhWXV+APusPUkJxodM9Po1qYl4wd2oFvblvTIbknx1jVcMWGMzkMqIo1ywnI3s0TgWeACIB9YaGaznXOray32PWCfc66PmV0N/A64KhKBAZxz+AMOX+DfX33+AP6AoyZ0/euyAGsKDuDzO6r9Aap9AWpCX6v9Aap8fqp9Aap8AapqgrcrawJU1PipqPFTWe2nvNpPeY2fimofB6v8HKz2UVbpo6zKR5UvcNyMLVMSadMyhXbpKXTKTGNIl9a0z0glp3UaHTLSyGmdSpesFrRLTyUh4ejzjeYVr1exi0ij1Wfkfgaw0Tm3GcDM3gQmAbXLfRLw69D1GcAzZmbOucOHqbWs313K+Y/mEXCOgCP4NRC87g9d94dK/ND1QIBv7quXTz+p33IhCQYtkhNpkZJIalIiLVMOXZLonJVMq9QkWqUmkR66ZKQlkZGWTOu0JDJbJJPZMpmsFilktUwmLVnFLCLeqU+5dwF21LqdD4w61jLOOZ+ZlQDZQGHthczsFuAWgPScXNonVWIGBiSY1bp+xAUjISGBhCMeS0yARLN/3w7dl2RQU11FqxZpJCUE709OMJISCF2M5ARCFyM5MXg90cCs9ijaAb7QpQ41oUspVBC87KrHN7Q+ysrKyMvLC9Paml4s54/l7KD8XouW/E36hqpzbhowDWDEiBHurbsnRGxbeXl5jBkzJmLrjzTl904sZwfl91q05K/PLhc7gW61bncN3VfnMmaWBGQSfGNVREQ8UJ9yXwj0NbOeZpYCXA3MPmKZ2cB3Q9e/A8w73ny7iIhE1gmnZUJz6HcA/yS4K+R059wqM3sIWOScmw28ALxqZhuBYoJ/AERExCP1mnN3zr0HvHfEfQ/Uul4JXBHeaCIi0lj6mKOISBxSuYuIxCGVu4hIHFK5i4jEIfNqj0Uz2wtsi+Am2nHEJ2RjjPJ7J5azg/J7LdL5ezjn2p9oIc/KPdLMbJFzboTXORpL+b0Ty9lB+b0WLfk1LSMiEodU7iIicSiey32a1wFOkvJ7J5azg/J7LSryx+2cu4hIcxbPI3cRkWZL5S4iEofivtzN7E4zW2tmq8zs917naQwz+6mZOTNr53WW+jKz/w59378ys7+aWZbXmerDzCaY2Toz22hm93idpyHMrJuZfWRmq0M/7z/yOlNDmVmimS01s3e8ztIYZpZlZjNCP/trzOwsr7LEdbmb2ViC53cd6pwbDDzqcaQGM7NuwIXAdq+zNNAHwBDn3KnAemCqx3lOqNbJ4CcCg4BrzGyQt6kaxAf81Dk3CDgT+GGM5Qf4EbDG6xAn4Q/AHOfcAGAoHr6WuC534Hbgt865KgDn3B6P8zTGE8DPCZ7QNWY45953zh06+ewXBM/gFe2+ORm8c64aOHQy+JjgnCtwzi0JXS8lWCxdvE1Vf2bWFbgEeN7rLI1hZpnAaILnt8A5V+2c2+9Vnngv937AeWa2wMz+ZWYjvQ7UEGY2CdjpnFvudZaTdBPwD69D1ENdJ4OPmXKszcxygdOBBd4maZAnCQ5kAl4HaaSewF7gxdDU0vNm1sqrME16guxIMLO5QMc6HrqX4OtrS/C/qCOBt82sVzSdAvAE+X9JcEomKh0vu3Pub6Fl7iU4XfBaU2ZrzswsHfgLcLdz7oDXeerDzC4F9jjnFpvZGK/zNFISMAy40zm3wMz+ANwD3O9VmJjmnBt/rMfM7HZgZqjMvzSzAMGD+uxtqnwncqz8ZnYKwZHAcjOD4LTGEjM7wzm3qwkjHtPxvvcAZnYDcCkwLpr+oB5HfU4GH9XMLJlgsb/mnJvpdZ4GOAf4tpldDKQBrc3sf51z13qcqyHygXzn3KH/Lc0gWO6eiPdpmVnAWAAz6wekECNHm3POrXDOdXDO5Trncgn+4AyLlmI/ETObQPC/2N92zpV7naee6nMy+KhlwVHAC8Aa59zjXudpCOfcVOdc19DP+tXAvBgrdkK/mzvMrH/ornHAaq/yxPzI/QSmA9PNbCVQDXw3RkaQ8eAZIBX4IPQ/jy+cc7d5G+n4jnUyeI9jNcQ5wHXACjNbFrrvl6FzIEvTuBN4LTQ42Azc6FUQHX5ARCQOxfu0jIhIs6RyFxGJQyp3EZE4pHIXEYlDKncRkTikchcRiUMqdxGROPT/AfZTssY3+RLaAAAAAElFTkSuQmCC\n", @@ -112,14 +109,15 @@ "def sigmoid(x):\n", " return 1 / (1 + np.exp(-x))\n", "\n", - "xs = np.linspace(-7, 7, 100)\n", - "ys = sigmoid(xs)\n", - "plt.plot(xs, ys, label=r'$\\sigma(x) = {\\frac{1}{1 + e^{-x}}}$')\n", + "xs_sig = np.linspace(-7, 7, 100)\n", + "ys_sig = sigmoid(xs_sig)\n", + "plt.plot(xs_sig, ys_sig, label=r'$\\sigma(x) = {\\frac{1}{1 + e^{-x}}}$')\n", "plt.yticks([0, 0.5, 1])\n", "plt.xlim([-7, 7])\n", "plt.legend()\n", "plt.grid()\n", - "plt.title('Sigmoid function')" + "plt.title('Sigmoid function')\n", + "plt.show()" ] }, { @@ -129,17 +127,7 @@ "outputs": [ { "data": { - "text/plain": [ - "Text(0.5, 1.0, 'Approximation')" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEICAYAAACktLTqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3WmYVNW59vH/U9XdQHczI4jMUWIkmIASUVGDeEwkGlHjORjiPCMOQeNsYqKJQ+LrEMdwEKejoiZ6EpVEcyKYaJyAEBUQRZRBQRmVqaeq5/2wCimQoZseVlX1/buufXVX1+6quwu9a9fae69t7o6IiBSWROwAIiLS8FTuIiIFSOUuIlKAVO4iIgVI5S4iUoBU7iIiBUjlLpLFzNaY2Vea6LnuMbOfNsVzSfNjOs5dmpKZTQG+Cezs7pWR4zQZMzsZON3dD4idRZoHbblLkzGz3sCBgANHNtJzFDXG44rkG5W7NKUTgVeB+4GTNvzQzO7PDFH81cxWm9mLZtYr6343s/PNbJ6ZLTOz35hZInPfyWb2spndYmbLgZ+bWcLMrjKz+Wb2qZk9aGZtM+uPNLMPzKxN5vZwM1tiZjtlPdduWbnuMrM/Z4ZrXjaznc3sVjNbaWbvmNnArJyXmdn7mb9hlpkdnfn5HsA9wH6Zx1mV9fi/zPr9M8xsrpmtMLM/mdkum70GZ5vZe2a2yszuNDNr4H8fKSAqd2lKJwIPZ5bvmlmXrPt+BFwLdAJmZNbJdjQwCNgLGAGcmnXfYGAe0AX4FXByZjkY+ApQDtwB4O6PAf8EfmtmHYF7CcMlS7eS+b+AqzK5KoFXgOmZ278Hbs5a933CJ5O2wC+A/zGzru4+GzgbeMXdy9293eZPYmbDgOszz9cVmA9M3Gy1I4BvAd/IrPfdrWQWUblL0zCzA4BewOPuPo1QhKOyVnnW3f+eGYe/krCV2yPr/hvdfYW7LwBuBX6Ydd/H7n67u9e4+3rCG8XN7j7P3dcAlwPHZQ3ZjAGGAVOAp939mW1Ef8rdp7l7BfAUUOHuD7p7CngM+GLL3d2fcPeP3T2deRN5D9inli/Rj4AJ7j498xpcnnkNemetc4O7r8q8BpOBAbV8bGmGVO7SVE4Cnnf3ZZnbj5A1NAMs3PBNppBXALts6X7CVu3W7iNz3/zN1i8ibNnj7quAJ4D+wP/bTu5Psr5fv4Xb5RtumNmJZjYjM2yyKvP4nbbz+FvMnHkNlgPdstZZkvX9uuznFtmcdj5JozOzVoRhhKSZbSioFkA7M/tm5naPrPXLgQ7Ax1kP0wOYmfm+52b3bX7I18eETwkb9ARqyBSzmQ0gDOs8CvwWOGyH/rAsmX0E/w0cQhh+SZnZDGDDuPj2DkvbJLOZlQEdgY/qm02aJ225S1M4CkgB/QhDCQOAPYB/EMbhAb5nZgeYWQlh7P1Vd8/eIr/YzNpnhmouIAyJbM2jwFgz65N5o7gOeMzda8ysJfA/wBXAKUA3MzunAf7GMkKBLwUws1MIW+4bfAJ0z/x9W8t8ipkNMLMWmcyvufuHDZBNmiGVuzSFk4D73H2Buy/ZsBB2cv6I8AnyEeBqwnDM3sDxmz3GH4FphJ2tzxJ2hG7NBOAh4O/AB0AFcF7mvuuBhe5+d2Zs+3jgl2bWtz5/oLvPIgzxvEIo8j2Bl7NWeYHwyWOJmS3bwu//H/BT4A/AYmBX4Lj6ZJLmTScxSXRmdj+wyN2v2sr9DvR197lNGkwkj2nLXUSkAKncRUQKkIZlREQKkLbcRUQKULTj3Dt16uS9e/eO9fQiInlp2rRpy9x9p+2tF63ce/fuzdSpU2M9vYhIXjKz+dtfS8MyIiIFSeUuIlKAVO4iIgVI5S4iUoBU7iIiBUjlLiJSgFTuIiIFaLvlbmYTMhcZfnsr95uZ/TZzYd83zWyvho8pIiJ1UZuTmO4nzLv94FbuHw70zSyDgbszXxvFnDkweXL4/uCDYffdw8/eew/6ZmbknjwZZs6EVAq+/30YPvzLv9urF8yfv+3vk0mYMQM2XGP+7bfBHdq1g48+gjZtYI89oKgorLd+PbRqBStWwKJFkE5D+/aw007w1a+Gx1i1CvbdFwYODI//7LPw2mvQpQuMGAFdu8LixeHxVq0Kz2cGn30Wfn/QIPjhD2HePHjmGViwAJYsgbIy6NYtrP/Vr8LgweHvWJK57tHOO4e/LZUKz5v9tW/f8Dpu6zXf8Ppuab3t3b8jjyki9VOricMyF+l9xt37b+G+3wFT3P3RzO05wFB3X7ytxxw0aJDX9QzVOXPg0VP/ys//+R0A0hiWMFKeADPSJMLi4WdpErglKC1PkChKsGZdgsqaJGkSpDxJ2pKkLEmNJ/Evvi8ilSii2ouorCmi2oqpThdRRTHVmaWKki+WaiuhwltQQUsqCV8raMl6WrGeVqyjlHWUspYy1lLGOitnrZXTu385735UxvIVxoZ/ghYtoF+/8HfW1EBVVSj27H+ili1DGX7ySXgTqara9DVKJKCkBMrLobg4vCmYhTeiZDK8Gb3/Puy6a/g6YEBY94ortl7c11238Y1g8/W2d//W/h3r+jsiEpjZNHcftL31GmL6gW5seoHiRZmffanczexM4EyALl26MGXKlDo90Wefwde+9ylT250I7iQMSoqddMopSjjVlWnSKcdTjqfSGJAgTWmLNMVFzvq1aUhtXBKkSaRTX3yfTKdpUZMKP6+pwlLrSaRTWKqGZKqGRDpFIlVDInM7WVNNMlVNsqaGZE0VCU9v/4/wzPImpC1BVctSqlqUUdGqjMpWralKtWbdnm2oKG3DutK2rC9vx9ry9qxr3Z61rTuwvk17kiVJ0unwyWBL781mYdlQnhC+h/AGUl0dir+6OmzxJxLwzjvhE8OWXvNhw8IbRlXVl9fb3v1b+3es6++ISN006dwy7j4OGAdhy33o0KF1+v05c+Cy++GtOT8CoH9/OOssmDgxlNfKlfD55zD7Hfj007CV2749jBsHX/kKXHFpGFqpqtpYcGZQWRmKBsLPN5TOqlUb709vpbc3KVBqaElFZps9LKVfbLuvo4y1tLE1lLOG3bt+Ts3K1ZSs/4w26z+j3apVdLSVdGmxko6V8+joy2hB1ZeeL0WC5UU7s8i6My/Viw/SvfiQ3sxlN+ayGwutF8kWRdpyF2nm8mpYBprRmPu/nIpla2hdsZS2FZ9QvOIT2lcupn/7jxmw00dUz1tI6oP5tF+9gJJ05RevT02imBUd+5L+6h4savt15pYPYMnOA2j5td706m0acxfJc7UdlmmIcj8cOBf4HmFH6m/dfZ/tPeaOlrtsJp0Oe03ffx/mzoV334XZs8Myd+7Gjxzt2sG3vhXeWfbdF4YMgbZt42YXkTprsDF3M3sUGAp0MrNFhCvUFwO4+z3AJEKxzwXWAafseGyps0QCdtklLAceuOl969aFjzAzZsDUqeEjwq9+FQo/kYC99goffw47DA44YOPYlIjkvWiX2dOWeyRr14aSf/FFmDIFXnkl7GgoL4dDD4Uf/CCMZbVpEzupiGxBUx4tI/mkrCwcqjJsWLi9Zg288AJMmgRPPw1PPRUOqRk+HE48EQ4/XFv0InlI0w80d+XlcOSRcM89sHAhvPQSnH122Lo/5hjo3h1+8pMwfi8ieUPlLhslEmFH6623hlNfn302jOPfdls43GfEiDCUE2koT0RqT+UuW1ZUBN/7HvzhD6Hor7gCXn457IAdMgT++leVvEgOU7nL9nXtCr/8ZRi2ueuu8PU734GDDgqFLyI5R+UutdeqFYweHcbf77wzzF52wAEwalQ4a0tEcobKXequRQs455xwwtRVV8GTT4bTTG+8Mcx4JiLRqdxlx5WVwbXXhrNhDz0ULrsM9t8/nDglIlGp3KX++vQJx8dPnAgffBDOfL3ppq3PtiYijU7lLg3DDEaOhFmzwhmuF18cjp9fvjx2MpFmSeUuDWunneCJJ+COO8LhkgMHwquvxk4l0uyo3KXhmcGYMfDPf4ZJ5YcOhUcfjZ1KpFlRuUvj2XtveP112GefcLjktdfqxCeRJqJyl8bVsWMYnjnhBPjZz+DUU3W4pEgT0KyQ0vhatIAHHgjX9vv5z8O0ww8/HIZsRKRRqNylaZjB1VdD69Zw0UVQUQGPPx4udCsiDU7DMtK0LrwwzE/z9NNw9NHhSuQi0uBU7tL0Ro+G8ePhL38JY/GpVOxEIgVHwzISx2mnwapV4UIg7dvD3XeHoRsRaRAqd4nnootg2TK44Qbo1ClMKywiDULlLnFdd10o+F/9Klzt6cQTYycSKQgac5e4zMIO1mHD4Iwz4JVXYicSKQgqd4mvuDjMR9OjBxx1VLisn4jUi8pdckOHDuHwyIqKcCHu9etjJxLJayp3yR177AGPPAIzZsDYsbHTiOQ1lbvklsMPh0sugd/9Dh57LHYakbylcpfc88tfwn77hR2sc+fGTiOSl1TuknuKi8P870VF4epOmqJApM5U7pKbevWCCRNg+vQwD7yI1InKXXLXUUeFk5quvx6mTo2dRiSvqNwlt912G3TpAiedFA6TFJFaUblLbmvXDu69F2bNChf6EJFaUblL7jvsMDj9dPjNbzQ8I1JLKnfJDzfdBJ07w9lna/53kVpQuUt+aNsWbrkFpk0Lc7+LyDap3CV/jBwJhx4KV14JixfHTiOS01Tukj/M4M47obIyXItVRLZK5S75pW9fuPxymDgRJk+OnUYkZ6ncJf9ccgn07Bm23rVzVWSLVO6Sf1q1ghtvDFMDP/BA7DQiOUnlLvlp5Mgwc+SVV8Lq1bHTiOQclbvkJ7NwaOSSJfDrX8dOI5JzVO6SvwYPhlGjwglOCxfGTiOSU1Tukt+uvx7SafjFL2InEckpKnfJbz17wjnnwP33w5w5sdOI5AyVu+S/yy+Hli3h6qtjJxHJGSp3yX+dO8PYseGC2jNmxE4jkhNU7lIYLroI2rcPh0aKiMpdCkS7dnDppTBpErz8cuw0ItGp3KVwnHdeGKK55prYSUSiU7lL4SgthZ/8BJ5/Hl59NXYakahU7lJYRo+Gjh3h2mtjJxGJSuUuhaW8PMwWOWlSuGqTSDOlcpfCc+65YQertt6lGVO5S+Fp0yYc9/7HP+q4d2m2VO5SmM4/H1q3DvO+izRDKncpTO3awdlnw+OPw7x5sdOINDmVuxSuCy6AZBJuvjl2EpEmp3KXwtWtG5xwAkyYAEuXxk4j0qRU7lLYLr4YKirg9ttjJxFpUip3KWxf+xqMGAF33AFr1sROI9JkVO5S+C69FFauhHvvjZ1EpMmo3KXw7bsvDBkCt90GqVTsNCJNQuUuzcOFF8IHH4QTm0SaAZW7NA8jRkCfPnDLLbGTiDQJlbs0D8lkOGv1pZfgjTdipxFpdCp3aT5OPTXMO6Otd2kGVO7SfLRpA6efHqYkWLgwdhqRRqVyl+blvPPAPRz3LlLAVO7SvPTuDUcfDePHw7p1sdOINBqVuzQ/558PK1bAI4/ETiLSaFTu0vwceCB84xthvhn32GlEGoXKXZofs7D1/uab8Pe/x04j0ihU7tI8jRoFHTpotkgpWCp3aZ5atYIzzoCnnoIFC2KnEWlwKndpvs45J3y9++64OUQagcpdmq+ePcOcM+PHhwt6iBQQlbs0b2PGwLJl4axVkQKicpfmbdiwcLWmO++MnUSkQancpXkzC2Pvr78OU6fGTiPSYFTuIieeCGVl2nqXgqJyF2nbFo4/HiZOhOXLY6cRaRAqdxEIO1YrKmDChNhJRBqEyl0EYM89w5wz99wD6XTsNCL1pnIX2eCcc2DePHj++dhJROpN5S6ywTHHQOfOcNddsZOI1JvKXWSDkpJwGb5nn4X582OnEakXlbtItjPPDF/HjYubQ6SealXuZnaYmc0xs7lmdtkW7j/ZzJaa2YzMcnrDRxVpAr16wRFHhPlmqqpipxHZYdstdzNLAncCw4F+wA/NrN8WVn3M3QdklvENnFOk6YweDZ9+Ck8+GTuJyA6rzZb7PsBcd5/n7lXARGBE48YSieg734Fdd9WOVclrRbVYpxuwMOv2ImDwFtb7gZkdBLwLjHX3hZuvYGZnAmcCdOnShSlTptQ5sEhT6HHooex6zz28cd99rO3TJ3YckTqrTbnXxtPAo+5eaWZnAQ8AwzZfyd3HAeMABg0a5EOHDm2gpxdpYHvuCffdx7emToVTTomdRqTOajMs8xHQI+t298zPvuDuy929MnNzPLB3w8QTiaRjRxg5Eh56CFavjp1GpM5qU+5vAH3NrI+ZlQDHAX/KXsHMumbdPBKY3XARRSIZPToU+8MPx04iUmfbLXd3rwHOBZ4jlPbj7j7TzK4xsyMzq51vZjPN7N/A+cDJjRVYpMkMHgwDB4Ydq+6x04jUiXmk/2gHDRrkU3VxBMl1//3f4cSml16CIUNipxHBzKa5+6DtraczVEW2ZdQoaNNGh0VK3lG5i2xLWRmcfDI88UQ4sUkkT6jcRbZn9Giorg5TEojkCZW7yPZ87WtwyCHhQh41NbHTiNSKyl2kNsaMgYUL4ZlnYicRqRWVu0htfP/70L073Hln7CQitaJyF6mNoiI46yz4v/+DOXNipxHZLpW7SG2dcQYUF8Pdd8dOIrJdKneR2urSBY49Fu67D9asiZ1GZJtU7iJ1cd558PnnYUIxkRymchepi333hb33hjvu0HwzktNU7iJ1YRa23mfNghdeiJ1GZKtU7iJ1NXIkdOoEt98eO4nIVqncReqqZcswU+TTT8OHH8ZOI7JFKneRHTF6dBii0WyRkqNU7iI7ont3OOaYMJnY2rWx04h8icpdZEddcAGsXAkPPhg7iciXqNxFdtT++8O3vgW33grpdOw0IptQuYvsKDMYOxbefRf+/OfYaUQ2oXIXqY9jj4Vu3eCWW2InEdmEyl2kPoqL4dxz4W9/gzffjJ1G5Asqd5H6OvNMKC0NY+8iOULlLlJfHTrASSfBww/DkiWx04gAKneRhjF2bLiItqYkkByhchdpCH37hpOa7roLVq+OnUZE5S7SYC6+GFatCmetikSmchdpKIMHw7e/DTffHIZoRCJSuYs0pEsugUWLYOLE2EmkmVO5izSk4cOhf3/49a91pSaJSuUu0pDMwtb722/DM8/ETiPNmMpdpKEddxz06QPXXqutd4lG5S7S0IqL4fLL4Y034PnnY6eRZkrlLtIYTjoJevTQ1rtEo3IXaQwlJXDppfDyy/Dii7HTSDOkchdpLKedBl27hq13kSamchdpLC1bhrNWX3gB/vGP2GmkmVG5izSms84KW+9XXqmxd2lSKneRxlRaClddFbbcdeSMNCGVu0hjO/106N07lLy23qWJqNxFGltJCVx9NUydCv/7v7HTSDOhchdpCscfD7vvHrbeU6nYaaQZULmLNIWionBI5KxZ8NBDsdNIM6ByF2kqxx4L++wTjpxZuzZ2GilwKneRpmIWLuTx8cdw002x00iBU7mLNKUhQ8IW/K9/HUpepJGo3EWa2g03QE1N2Lkq0khU7iJNbddd4bzz4P77Yfr02GmkQKncRWK46iro1AnGjIF0OnYaKUAqd5EY2rULO1VffRUmTIidRgqQyl0klhNOgAMPDPO+L1sWO40UGJW7SCxmcNdd8PnncNllsdNIgVG5i8TUvz+MHQv33huu2iTSQFTuIrH97GfQqxeceiqsXx87jRQIlbtIbOXlYcv93Xfhpz+NnUYKhMpdJBcccki4atPNN8M//xk7jRQAlbtIrvjNb6BnTzjlFA3PSL2p3EVyRevWG4dnLrkkdhrJcyp3kVxyyCHw4x/DHXfoqk1SLyp3kVxzww2w117h6JkFC2KnkTylchfJNS1awGOPQXU1jBoVZpAUqSOVu0gu2m03+N3vwolNV14ZO43kIZW7SK4aNQrOPjtc2OORR2KnkTyjchfJZbfdFiYXO+00mDo1dhrJIyp3kVxWUgK//z107gxHHQVLlsROJHlC5S6S6zp3hj/+EVauhCOOgNWrYyeSPKByF8kHAwaEI2hmzICjj4bKytiJJMep3EXyxRFHwPjx8Le/wYknQioVO5HksKLYAUSkDk4+GZYuDdMTtGsHd98NCW2jyZep3EXyzcUXw4oV4UzWVArGjVPBy5eo3EXy0XXXQXExXHttOJN1wgRIJmOnkhyichfJR2ZwzTXhUMmf/jRMEfzgg9CyZexkkiNU7iL57KqroLQULroIPv44zCTZqVPsVJIDNFAnku8uvBAefzycwbrffmE+eGn2VO4iheA//xNeeAFWrYJ99oE//Sl2IolM5S5SKPbfH15/HXbdFUaMgEsv1XTBzZjKXaSQ9OkTpgneMJvk0KEwd27sVBKByl2k0LRsGU5uevhhePtt+OY34fbbIZ2OnUyakMpdpFCNGhXK/aCD4Pzz4eCD4a23YqeSJqJyFylk3bvDpElhTpq33oKBA0PRr1wZO5k0MpW7SKEzCxf7eO89OOMMuOMO6NsXbroJ1q2LnU4aicpdpLno2DGMxU+bBoMGhTlqdt0VfvtblXwBUrmLNDcDB8Jf/gL/+AfsvjtccAH06BHOdl28OHY6aSAqd5Hm6oADYPLkUPIHHRQmI+vVK5wQ9dxzOromz6ncRZozs1DyTz0Vpi0YMyYU/mGHhWPmL70Upk8H99hJpY5U7iIS7LYb3HILfPRRuKRfv35w882w995hB+xFF4UpDqqqYieVWjCP9I48aNAgnzp1apTnFpFaWr48bNU/8QRMmRKKvXVr+Pa3YdiwcOz8nntqLvkmZGbT3H3QdtdTuYtIraxZE67fOmlSGLp5773w89atw2Rl++4bjsIZOBB69gxDPtLgVO4i0rgWLQpb86+8EpY339x40e727aF//zC0069fOCqnb99Q+kW6jER9NGi5m9lhwG1AEhjv7jdsdn8L4EFgb2A5MNLdP9zWY6rcRQrMunXhLNh//SssM2eGZdWqjesUF4eC79UrLD17QrdusMsuYenSBTp31hvANtS23Lf7CppZErgTOBRYBLxhZn9y91lZq50GrHT33czsOOBGYOSORReR2pgzJ4yM9O0bNox3ZL2t3Vfbx97ksRaW8t7SwfQ9eDAcDI8+Cku/4exWvoTV09+jy+q5fL3FXFLvf0D71+bT87XnaLtuMbaFDczPijqytrQTq5IdWV/akdY9O1DRqj3L0+2paNGWBavaMPvjtqxLtibVqpzFa1rTeucy+n6zlNkLylhV2YrP1yapqAjzqCWTYfbjIUPCEZ7PPRdGmUpKwvtN9+7QtWs4z6tjR9h55/A7kyfD55+H0abBg8MHk8WLw3tXMglf/3p4j0qlNr5WG167ZHLTnwP8+c/hQ85++8Hw4bV7XXfUdrfczWw/4Ofu/t3M7csB3P36rHWey6zzipkVAUuAnXwbD64td5EdN2dOOCx9Q4FcccWWS3hb623tvto+9taeZ+XKUIAzZ4ZC3XBwjdnGUZsNt7t0qGZYvyWsfucj2q5bTNnaT+hCWDqynI4spxPL6MBK2ttKWvvqWr9GlZSwnlZU0JL1tKKSFl9aqiihmuIvvtZQTCpZjBUXsb6qiKp0ETUU4Ykkxa2KaNM+yUefJEl5kqpUkhalSawoSfeeCYpbJhk4KMHUaQkqqhIsWJSgW48EJS0THH6EsXR5ggcfMjDjxVaHcc3dO+1QwTfYsIyZHQsc5u6nZ26fAAx293Oz1nk7s86izO33M+ss2+yxzgTOBOjSpcveEydOrNtfJSIAfPZZGO0oKQnl2a4dtG1bt/W2dl9tH3trz7NmDVRUhCJ33/a5UIlEuARsZWVYf1vrJpNATYqi9etoUbGWFhVrKK5cT0nlekoq11FUVUFxZimqrqSoporiqgqSNVUUVVdRVF1JMlVNsqaGZE01yVQ1iVRN1tcaEqkaEulUWFLhq224nU6RaKATu5648E6q9+7HLrvU/XcPPvjghhmWaUjuPg4YB2HLfejQoU359CIFo1C23Dt2DAfXzJ4Na9duebLKRCIMnbRuHYb1q6vD0hgSifAGVV4Oq1eH53EPz9+hE3zlK/Dvf6VJeIpUVYqdOqRoVZJi0F5pWpel+cFRKZ560lm/Ns3st1N8vZ9TXprm3HPSLFzg/OLqNAlzPn6yOzf/R0saswI1LCOSp3JuzD3rdyAz5r40jF/Pnh1Ksl8/eO01+OSTMIZ9+OGh8JNJmD8/zITw7rtQVhb2s372GbRpEw6nT6VgyZLw2O+9B//+d3iDKC2FFSvC/tgBA8KFp9at2/gJotDG3BtyWKYIeBc4BPgIeAMY5e4zs9YZA+zp7mdndqge4+7/ta3HVbmLiNRdgx0t4+41ZnYu8BzhUMgJ7j7TzK4Bprr7n4B7gYfMbC6wAjiufvFFRKQ+ajXm7u6TgEmb/exnWd9XAP/ZsNFERGRHaeIwEZECpHIXESlAKncRkQKkchcRKUAqdxGRAqRyFxEpQNHmczezpcD8ej5MJ2DZdteKR/nqL9czKl/9KF/d9XL3nba3UrRybwhmNrU2Z2rFonz1l+sZla9+lK/xaFhGRKQAqdxFRApQvpf7uNgBtkP56i/XMypf/ShfI8nrMXcREdmyfN9yFxGRLVC5i4gUoLwsdzPrYWaTzWyWmc00swtiZ8pmZi3N7HUz+3cm3y9iZ9oSM0ua2b/M7JnYWTZnZh+a2VtmNsPMcu6qLmbWzsx+b2bvmNnszBXLcoKZ7Z553TYsn5vZj2PnymZmYzP/b7xtZo+aWcvYmbKZ2QWZbDNz7bWrrbwcczezrkBXd59uZq2BacBR7j4rcjQAzMyAMndfY2bFwEvABe7+auRomzCzC4FBQBt3PyJ2nmxm9iEwaPOLrOcKM3sA+Ie7jzezEqDU3VfFzrU5M0sSrqA22N3re9JggzCzboT/J/q5+3ozexyY5O73x00WmFl/YCKwD1AF/AU4293nRg1WR3m55e7ui919eub71cBsoFvcVBt5sCZzsziz5NS7qJl1Bw4HxsfOkm/MrC1wEOEKZLh7VS4We8YhwPu5UuxZioBWmct4lgIfR86TbQ/gNXdf5+41wIvAMZEz1Vlelns2M+sNDARei5tkU5khjxnAp8Bf3T2n8gG3Apc1JpE7AAACM0lEQVQA6dhBtsKB581smpmdGTvMZvoAS4H7MsNa482sLHaorTgOeDR2iGzu/hFwE7AAWAx85u7Px021ibeBA82so5mVAt8DekTOVGd5Xe5mVg78Afixu38eO082d0+5+wCgO7BP5qNeTjCzI4BP3X1a7CzbcIC77wUMB8aY2UGxA2UpAvYC7nb3gcBa4LK4kb4sM1x0JPBE7CzZzKw9MILwJrkLUGZmx8dNtZG7zwZuBJ4nDMnMAFJRQ+2AvC33zFj2H4CH3f3J2Hm2JvNxfTJwWOwsWYYAR2bGtScCw8zsf+JG2lRm6w53/xR4ijD+mSsWAYuyPo39nlD2uWY4MN3dP4kdZDP/AXzg7kvdvRp4Etg/cqZNuPu97r63ux8ErATejZ2prvKy3DM7LO8FZrv7zbHzbM7MdjKzdpnvWwGHAu/ETbWRu1/u7t3dvTfhY/sL7p4zW05mVpbZUU5muOM7hI/KOcHdlwALzWz3zI8OAXJiZ/5mfkiODclkLAD2NbPSzP/LhxD2m+UMM+uc+dqTMN7+SNxEdVcUO8AOGgKcALyVGdcGuMLdJ0XMlK0r8EDmSIUE8Li759zhhjmsC/BU+P+eIuARd/9L3Ehfch7wcGboYx5wSuQ8m8i8KR4KnBU7y+bc/TUz+z0wHagB/kXuneb/BzPrCFQDY3J4h/lW5eWhkCIism15OSwjIiLbpnIXESlAKncRkQKkchcRKUAqdxGRAqRyFxEpQCp3EZEC9P8BA9MYkaSCfeAAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] @@ -155,20 +143,22 @@ "def sigmoid_mu_s(x, mu, s):\n", " return 1 / (1 + np.exp(-(x + mu) / s))\n", "\n", - "plt.scatter(X, Y, s=10, c='b', alpha=0.5)\n", - "sig_x = np.linspace(X.min(), X.max(), 100)\n", - "y_flip = 1 if Y[X.argmin()] == 0 else -1\n", - "sig_y = sigmoid_mu_s(sig_x, -X.mean(), y_flip * 0.5)\n", + "plt.scatter(X[:, 0], Y, s=10, c='b', alpha=0.5)\n", + "sig_x = np.linspace(X[:, 0].min(), X[:, 0].max(), 100)\n", + "y_flip = 1 if Y[X[:, 0].argmin()] == 0 else -1\n", + "sig_y = sigmoid_mu_s(sig_x, -X[:, 0].mean(), y_flip * 0.5)\n", "plt.plot(sig_x, sig_y, c='r')\n", "plt.yticks([0, 0.5, 1])\n", - "plt.title('Approximation')" + "plt.grid(axis='y')\n", + "plt.title('Approximation')\n", + "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Hypothesis and Prediction\n", + "### Hypothesis and Prediction\n", "\n", "We can tweak the sigmoid function by passing the dot product of $x$ (vector of feature) and $\\theta$ (the vector of weights).\n", "\n", @@ -217,13 +207,13 @@ "source": [ "def hypothesis(x, theta):\n", " # suppose that x_0 = 1 and isn't mentionned\n", - " return sigmoid(theta[0] + x.dot(theta[1:]))\n", + " return sigmoid(x.dot(theta))\n", "\n", "\n", "def predict(x, theta):\n", " return int(hypothesis(x, theta) >= 0.5) # a bit more clear\n", " # or\n", - " return int(theta[0] + x.dot(theta[1:]) >= 0)\n", + " return int(x.dot(theta) >= 0)\n", " # there is a nice vector interpretation for this one\n", " # and it probably compute faster" ] @@ -232,7 +222,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Cost function\n", + "### Cost function\n", "\n", "We have to evaluate our model by introducing a cost function, this one is called the *logloss*\n", "\n", @@ -261,17 +251,7 @@ "outputs": [ { "data": { - "text/plain": [ - "Text(0.5, 1.0, 'cost function')" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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