You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
410 lines
54 KiB
Plaintext
410 lines
54 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"id": "ecf6f699-9799-49dd-b553-2bf87b763ea1",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import pandas as pd\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import numpy as np"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"id": "08a7ac73-f032-43f6-985c-ef004b0c123d",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df = pd.read_csv(\"insurance_data.csv\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 27,
|
|
"id": "24ebd375-3904-4c96-bb61-1810dfb24e48",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>age</th>\n",
|
|
" <th>bought_insurance</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>22</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>25</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>47</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>52</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>46</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" age bought_insurance\n",
|
|
"0 22 0\n",
|
|
"1 25 0\n",
|
|
"2 47 1\n",
|
|
"3 52 0\n",
|
|
"4 46 1"
|
|
]
|
|
},
|
|
"execution_count": 27,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"df.head()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"id": "260592d2-b720-4168-a5bd-c3f916d7e508",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<matplotlib.collections.PathCollection at 0x22de0936700>"
|
|
]
|
|
},
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8WgzjOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAeL0lEQVR4nO3df3TV9X348VcC5AYqCbRIwo8odtWiU8CC5mTU0zlTmfWwsh/9cqwrlLXu6GgHZD+EVUg7W8N0OuqBmknr7PluHahntnZaHEsLO66sTBirropacXDUBDgrCY2YuNzP9w+/Xk0JmosJbwKPxzn3nPC578+970/eCfd5PvdHSrIsywIAIJHS1BMAAE5vYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJIannoC/ZHP5+Oll16K0aNHR0lJSerpAAD9kGVZHD58OCZOnBilpcc+/zEkYuSll16Kmpqa1NMAAI7Dvn37YvLkyce8fkjEyOjRoyPi9YOpqKhIPBsAoD86Ojqipqam8Dh+LEMiRt54aqaiokKMAMAQ804vsfACVgAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAIKmiY+Rf/uVfYu7cuTFx4sQoKSmJb3/72++4z5YtW+JDH/pQ5HK5+MAHPhD33nvvcUyVEynLvxL51vMi33peZPlXUk+HU9Sp9HPW32MZ6HEp55jSYBzLQB/3UFjDk2Wti46Rzs7OmD59eqxbt65f4/fs2RNXX311XH755bFr165YunRpfPazn41HH3206MkCAKeeov82zVVXXRVXXXVVv8c3NzfHOeecE7fffntERJx//vnx2GOPxV/91V/FnDlzir17BlmhjLMjb9l4JLL861+WlI468ZPilHMq/Zz191gGatxbx6aaY0qD8X0c6OMejO/jif45O9FrPeh/KG/btm1RX1/fa9ucOXNi6dKlx9ynq6srurq6Cv/u6OgYrOnxC7L9M47edqCu8HVJ9TMncDacqk6ln7P+HstAjXvr2FRzTGkwvo8DfdyD8X080T9nJ3qtB/0FrK2trVFVVdVrW1VVVXR0dMSRI0f63KepqSkqKysLl5qamsGeJgCQyKCfGTkeK1asiIaGhsK/Ozo6BMkJUjJ+1+tfZEcKlVxy5raIkpHpJsUp51T6OevvsQz0uJRzTGkwjmWgj3sorOHJttaDHiPV1dXR1tbWa1tbW1tUVFTEyJF9H3Qul4tcLjfYU6MPbz6f+NaNI0+K54o5dZxKP2f9PZaBHpdyjikNxrEM9HEPhTU82dZ60J+mqauri5aWll7bNm/eHHV1dcfYAwA4nRQdIz//+c9j165dsWvXroh4/a27u3btir1790bE60+xLFiwoDD++uuvj+effz7+9E//NJ5++un42te+Fvfdd18sW7ZsYI4AABjSSrIsy4rZYcuWLXH55ZcftX3hwoVx7733xqc//el44YUXYsuWLb32WbZsWfzkJz+JyZMnx8qVK+PTn/50v++zo6MjKisro729PSoqKoqZLgCQSH8fv4uOkRTECAAMPf19/Pa3aQCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKSOK0bWrVsXU6ZMifLy8qitrY3t27e/7fg1a9bEBz/4wRg5cmTU1NTEsmXL4tVXXz2uCQMAp5aiY2Tjxo3R0NAQjY2NsXPnzpg+fXrMmTMn9u/f3+f4b33rW7F8+fJobGyMp556Kr7xjW/Exo0b48/+7M/e9eQBgKGv6Bi544474rrrrotFixbFBRdcEM3NzTFq1Ki45557+hz/wx/+MGbPnh2f/OQnY8qUKXHllVfGNddc845nUwCA00NRMdLd3R07duyI+vr6N2+gtDTq6+tj27Ztfe7zK7/yK7Fjx45CfDz//PPxyCOPxMc+9rFj3k9XV1d0dHT0ugAAp6bhxQw+ePBg9PT0RFVVVa/tVVVV8fTTT/e5zyc/+ck4ePBgfPjDH44sy+J///d/4/rrr3/bp2mampriS1/6UjFTAwCGqEF/N82WLVvilltuia997Wuxc+fO+Id/+Id4+OGH4+abbz7m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xu/+7u/G+973vhg5cmRcdNFF8fjjjxeuz7IsVq1aFRMmTIiRI0dGfX19PPvsswlnfPzEyHHYunVrLF68OP7t3/4tNm/eHK+99lpceeWV0dnZWRizbNmy+O53vxv3339/bN26NV566aX4rd/6rYSzPj1Mnjw5Vq9eHTt27IjHH388fu3Xfi0+/vGPx3/9139FhHU5Gfz7v/97/PVf/3VMmzat13Zrk84v//Ivx8svv1y4PPbYY4XrrEsaP/vZz2L27NkxYsSI+N73vhc/+clP4vbbb4+xY8cWxtx6661x5513RnNzc/zoRz+K97znPTFnzpx49dVXE878OGW8a/v3788iItu6dWuWZVl26NChbMSIEdn9999fGPPUU09lEZFt27Yt1TRPW2PHjs2+/vWvW5eTwOHDh7Nzzz0327x5c/aRj3wkW7JkSZZlfmdSamxszKZPn97nddYlnRtvvDH78Ic/fMzr8/l8Vl1dnd12222FbYcOHcpyuVz293//9ydiigPKmZEB0N7eHhER733veyMiYseOHfHaa69FfX19YczUqVPjrLPOim3btiWZ4+mop6cnNmzYEJ2dnVFXV2ddTgKLFy+Oq6++utcaRPidSe3ZZ5+NiRMnxvvf//649tprY+/evRFhXVJ66KGHYtasWfGJT3wixo8fHxdffHGsX7++cP2ePXuitbW119pUVlZGbW3tkFwbMfIu5fP5WLp0acyePTsuvPDCiIhobW2NsrKyGDNmTK+xVVVV0drammCWp5cnnngizjjjjMjlcnH99dfHgw8+GBdccIF1SWzDhg2xc+fOaGpqOuo6a5NObW1t3HvvvbFp06a46667Ys+ePXHZZZfF4cOHrUtCzz//fNx1111x7rnnxqOPPho33HBD/OEf/mF885vfjIgofP+rqqp67TdU12ZI/NXek9nixYvjySef7PUcK2l98IMfjF27dkV7e3s88MADsXDhwti6dWvqaZ3W9u3bF0uWLInNmzdHeXl56unwFldddVXh62nTpkVtbW2cffbZcd9998XIkSMTzuz0ls/nY9asWXHLLbdERMTFF18cTz75ZDQ3N8fChQsTz27gOTPyLnzuc5+Lf/zHf4wf/OAHMXny5ML26urq6O7ujkOHDvUa39bWFtXV1Sd4lqefsrKy+MAHPhAzZ86MpqammD59enz1q1+1Lgnt2LEj9u/fHx/60Idi+PDhMXz48Ni6dWvceeedMXz48KiqqrI2J4kxY8bEeeedF88995zfmYQmTJgQF1xwQa9t559/fuEptDe+/7/4zqahujZi5DhkWRaf+9zn4sEHH4zvf//7cc455/S6fubMmTFixIhoaWkpbNu9e3fs3bs36urqTvR0T3v5fD66urqsS0JXXHFFPPHEE7Fr167CZdasWXHttdcWvrY2J4ef//zn8dOf/jQmTJjgdyah2bNnH/WREc8880ycffbZERFxzjnnRHV1da+16ejoiB/96EdDc21Sv4J2KLrhhhuyysrKbMuWLdnLL79cuLzyyiuFMddff3121llnZd///vezxx9/PKurq8vq6uoSzvr0sHz58mzr1q3Znj17sh//+MfZ8uXLs5KSkuyf/umfsiyzLieTt76bJsusTSp/9Ed/lG3ZsiXbs2dP9q//+q9ZfX19Nm7cuGz//v1ZllmXVLZv354NHz48+8pXvpI9++yz2d/93d9lo0aNyv72b/+2MGb16tXZmDFjsu985zvZj3/84+zjH/94ds4552RHjhxJOPPjI0aOQ0T0efmbv/mbwpgjR45kf/AHf5CNHTs2GzVqVPabv/mb2csvv5xu0qeJ3/u938vOPvvsrKysLDvzzDOzK664ohAiWWZdTia/GCPWJo358+dnEyZMyMrKyrJJkyZl8+fPz5577rnC9dYlne9+97vZhRdemOVyuWzq1KnZ3Xff3ev6fD6frVy5MquqqspyuVx2xRVXZLt3704023enJMuyLOWZGQDg9OY1IwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgqf8HZg7s3fiT4kQAAAAASUVORK5CYII=",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.scatter(df.age, df.bought_insurance, marker='+', c=df.bought_insurance)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"id": "02a35555-40b0-458f-8c67-c061ba3ffc94",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def sigmoid(z):\n",
|
|
" return 1/(1+np.exp(-z))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 31,
|
|
"id": "b92661b6-b83c-4255-8aa2-ed5a70ed849b",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"x = np.arange(-10, 10, 0.001)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 32,
|
|
"id": "7bba53a6-5925-49e7-9509-1713638da989",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"y = sigmoid(x)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 33,
|
|
"id": "ff24178a-2cb8-48c6-a480-cf9bd530dbb6",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"dy = derivative_sigmoid(x)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 36,
|
|
"id": "8d966ed9-b435-4440-88cf-07d81d4d2d90",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<matplotlib.legend.Legend at 0x22de0ad5040>"
|
|
]
|
|
},
|
|
"execution_count": 36,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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bdtW5HUmT55M06ZNXY83bdpE3759CQ4OJioqijvvvJNjx46V6fv11Vdf0aZNGwIDA4mIiCApKYnsbOeU2L/vpsnMzGTIkCHUqlWLmJgYJk+efEEXWHx8PH//+99d70GjRo2YM2cOR48eZcCAAQQHB9O2bVvWrFlTpI7//ve/XHHFFdhsNuLj4y94337fTbNz50569uxJQEAAl19+OQsXLizT/or3yczJZ+j7q5i57hA+VgsvDmzN83+8QkFEajzvOzKSfxomxJrz2s8cBv+yH55/8skn+emnn/j666+pV68ezzzzDOvWraN9+/YA/OUvf2HLli18/vnnxMbGMmvWLK6//no2btxI8+bNATh9+jSvvPIK//73v4mIiKBevXpFXuOWW27h4YcfZvHixfTu3RuAEydOMH/+fObNmwdAVlYW/fr146WXXsJms/HRRx/Rv39/tm/fTsOGDZk5cybt2rXjvvvu49577y12X1q0aEHnzp355JNPePHFF13LP/nkE+644w4ATp06xbXXXss999zD5MmTOXPmDE899RS33norP/zwQ6nfq5SUFG6//XZeffVVbrrpJjIzM/n5559L7JoZNWoUy5YtY86cOURFRTF27Ngi39tCkydPZsKECYwZM4bJkydz55130q1bN+6++25ee+01nnrqKYYOHcrmzZuxWCysXbuWW2+9leeff57BgwezfPlyHnroISIiIrjrrrsuqMPhcDBo0CCioqJYuXIl6enplzwmSDzTyew8hn2wit8OphNs8+WdIR25WmfLiADeGEY8RFZWFu+//z4ff/yxKyR8+OGHNGjQAIDk5GQ++OADkpOTiY11hqsnnniC+fPn88EHHzBhwgQA8vPzeffdd2nXrl2xr1OnTh369u3Lp59+6nqdr776isjISK655hoA2rVrV2T7F198kVmzZjFnzhz+8pe/EB4ejo+PD7Vr1yY6OrrEfRoyZAhvv/22K4zs2LGDtWvX8vHHHwPw9ttv06FDB1ftANOmTSMuLo4dO3bQokWLEp87JSWFgoICBg0aRKNGjQBo06ZNsW0zMzP58MMPi+zzBx984Po+nq9fv37cf//9AIwdO5Z//OMfdOnShVtuuQWAp556isTERNLS0oiOjmbSpEn07t2bMWPGAM4QtmXLFl577bViw8j333/Ptm3bWLBggev1J0yYQN++fUvc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o3Tv3p3WrVuX2K5ly5ZMmzaNtm3bkp6ezuuvv063bt3YvHlzlV4QtKISEhKYPn06LVu2JCUlhfHjx9OjRw82bdpE7dq1L2jvqe8fwOzZszl16hR33XVXiW087f07X+F7UJ73pyK/wxXhkWHk6aef5pVXXim1zdatWy86yMpTVGR/Dx48yIIFC/jiiy8u+vznj3Vp06YNMTEx9O7dm927d9O0adOKF14O5dnHUaNGuZa1bdsWf39/7r//fiZOnOi20zVX5D08dOgQ119/Pbfccgv33ntvqdu6w3tY040cOZJNmzaVOp4CIDExkcTERNfjbt260apVK/75z3/y4osvVnWZ5da3b1/X/bZt25KQkECjRo344osvGDFihImVVb7333+fvn37EhsbW2IbT3v/PIVHhpHHH3+81OQK0KRJkzI9V3R09AWjggvPsoiOji5xm98P3CkoKODEiRMlbnMpKrK/H3zwAREREfzxj38s9+slJCQAzv/Kq+uD7FLe04SEBAoKCti3bx8tW7a8YH10dDR5eXmcOnWqyNGRtLS0Knm/ilPe/Tt8+DDXXHMN3bp141//+le5X8+M97A4kZGR+Pj4XHDmUmnf++jo6HK1dwd/+ctfXAPZy/vfsZ+fHx06dGDXrl1VVF3lCgsLo0WLFiXW64nvH8D+/fv5/vvvy3000ZPev8L3IC0tjZiYGNfytLQ02rdvX+w2FfkdrpBKG33i5i42gDUtLc217J///KcREhJi5OTkFPtchQNY16xZ41q2YMECtxnA6nA4jMaNGxuPP/54hbZfunSpARi//vprJVdWNT7++GPDarUaJ06cKHZ94QDWr776yrVs27ZtbjuA9eDBg0bz5s2N2267zSgoKKjQc7jTe9i1a1fjL3/5i+ux3W436tevX+oA1htvvLHIssTERLccAOlwOIyRI0casbGxxo4dOyr0HAUFBUbLli2Nxx57rJKrqxqZmZlGnTp1jDfffLPY9Z70/p1v3LhxRnR0tJGfn1+u7dz5/aOEAayvv/66a1l6enqZBrCW53e4QrVW2jO5qf379xvr1683xo8fbwQHBxvr16831q9fb2RmZhqG4fxBat26tXHdddcZGzZsMObPn2/UrVvXGD16tOs5Vq5cabRs2dI4ePCga9n1119vdOjQwVi5cqWxdOlSo3nz5sbtt99e7ftXnO+//94AjK1bt16w7uDBg0bLli2NlStXGoZhGLt27TJeeOEFY82aNcbevXuNr7/+2mjSpInRs2fP6i67TJYvX25MnjzZ2LBhg7F7927j448/NurWrWsMHTrU1eb3+2gYhvHAAw8YDRs2NH744QdjzZo1RmJiopGYmGjGLpTq4MGDRrNmzYzevXsbBw8eNFJSUly389t40nv4+eefGzabzZg+fbqxZcsW47777jPCwsJcZ7DdeeedxtNPP+1qv2zZMsPX19d4/fXXja1btxrjxo0z/Pz8jI0bN5q1CyV68MEHjdDQUOPHH38s8l6dPn3a1eb3+zd+/HhjwYIFxu7du421a9cat912mxEQEGBs3rzZjF24qMcff9z48ccfjb179xrLli0zkpKSjMjISOPIkSOGYXj2+1fIbrcbDRs2NJ566qkL1nna+5eZmen6nAOMSZMmGevXrzf2799vGIZhvPzyy0ZYWJjx9ddfG7/99psxYMAAo3HjxsaZM2dcz3Httdcab731luvxxX6HK4PXh5Fhw4YZwAW3xYsXu9rs27fP6Nu3rxEYGGhERkYajz/+eJF0vHjxYgMw9u7d61p2/Phx4/bbbzeCg4ONkJAQY/jw4a6AY7bbb7/d6NatW7Hr9u7dW2T/k5OTjZ49exrh4eGGzWYzmjVrZjz55JNGenp6NVZcdmvXrjUSEhKM0NBQIyAgwGjVqpUxYcKEIkexfr+PhmEYZ86cMR566CGjTp06RlBQkHHTTTcV+YB3Fx988EGxP6/nH8T0xPfwrbfeMho2bGj4+/sbXbt2NX755RfXuquvvtoYNmxYkfZffPGF0aJFC8Pf39+44oorjLlz51ZzxWVT0nv1wQcfuNr8fv8effRR1/ciKirK6Nevn7Fu3brqL76MBg8ebMTExBj+/v5G/fr1jcGDBxu7du1yrffk96/QggULDMDYvn37Bes87f0r/Lz6/a1wHxwOhzFmzBgjKirKsNlsRu/evS/Y70aNGhnjxo0rsqy03+HKYDEMw6i8Th8RERGR8qnx84yIiIiIuRRGRERExFQKIyIiImIqhRERERExlcKIiIiImEphREREREylMCIiIiKmUhgRERERUymMiIiIiKkURkRERMRUCiMiIiJiKoURERERMdX/A91+wpO8I6OlAAAAAElFTkSuQmCC",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.plot(x, y)\n",
|
|
"plt.plot(x, dy)\n",
|
|
"plt.legend([\"sigmoid\", \"derivative_sigmoid\"])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "880b3325-7406-42fb-a68d-86ea1ae0fb12",
|
|
"metadata": {},
|
|
"source": [
|
|
"最小化:\n",
|
|
"$$loss = -\\frac{1}{n}\\sum_{i=1}^n [y_i \\cdot log(\\hat{y_i}) + (1-y_i) \\cdot log(1 - \\hat{y_i})]$$\n",
|
|
"$$\\hat{y_i} = sigmoid(z_i)$$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "9860e2a9-c601-4373-b772-6cf89ea8bb9f",
|
|
"metadata": {},
|
|
"source": [
|
|
"根据链式求导法则:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "44920e6d-9749-4fff-b4fb-6d29350352ff",
|
|
"metadata": {},
|
|
"source": [
|
|
"$$\\frac{\\partial loss}{\\partial w} = \\frac{\\partial loss}{\\partial y_i}\\cdot \\frac{\\partial y_i}{\\partial z_i} \\cdot\\frac{\\partial z_i}{\\partial w}$$\n",
|
|
"$$\\frac{\\partial loss}{\\partial b} = \\frac{\\partial loss}{\\partial y_i}\\cdot \\frac{\\partial y_i}{\\partial z_i}\\cdot \\frac{\\partial z_i}{\\partial b}$$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "71f01557-4978-410c-b803-9b8935b25b7e",
|
|
"metadata": {},
|
|
"source": [
|
|
"$$\\frac{\\partial loss}{\\partial y_i} = -\\frac{y_i}{\\hat{y_i}} + \\frac{1 - y_i}{1 - \\hat{y_i}}$$\n",
|
|
"$$\\frac{\\partial y_i}{\\partial z} = y_i\\cdot(1 - y_i)$$\n",
|
|
"$$\\frac{\\partial z_i}{\\partial w} = x_i$$\n",
|
|
"$$\\frac{\\partial z_i}{\\partial b} = 1$$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "1b670a1f-1a58-431a-8f4f-7792cf6fdec4",
|
|
"metadata": {},
|
|
"source": [
|
|
"$$\\frac{\\partial loss}{\\partial w} = -\\frac{y_i}{\\hat{y_i}} + \\frac{1 - y_i}{1 - \\hat{y_i}} \\cdot y_i \\cdot (1 - y_i) \\cdot x_i = (\\hat{y_i} - y_i) \\cdot x_i$$\n",
|
|
"$$\\frac{\\partial loss}{\\partial b} = -\\frac{y_i}{\\hat{y_i}} + \\frac{1 - y_i}{1 - \\hat{y_i}} \\cdot y_i \\cdot (1 - y_i) \\cdot x_i = (\\hat{y_i} - y_i) \\cdot 1 = \\hat{y_i} - y_i$$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 72,
|
|
"id": "9a608877-c041-4441-9982-ef1195633a06",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def logistic_regression(x, y, iterations, learning_rate):\n",
|
|
" w, b = 0, 0\n",
|
|
" for i in range(1, iterations + 1):\n",
|
|
" y_hat = sigmoid(w * x + b)\n",
|
|
" loss = np.mean(-((y * np.log(y_hat)) + (1 - y) * np.log(1 - y_hat)))\n",
|
|
" if i % 1000 == 0:\n",
|
|
" print(f\"Loss:{round(loss,2)}, Iteration: {i}\")\n",
|
|
" dw = np.mean((y_hat - y) * x)\n",
|
|
" db = np.mean(y_hat - y)\n",
|
|
" w -= learning_rate * dw\n",
|
|
" b -= learning_rate * db\n",
|
|
" return w, b"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 74,
|
|
"id": "5099121d-ed49-44f0-b706-5512b9cc1955",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Loss:1.62, Iteration: 1000\n",
|
|
"Loss:0.75, Iteration: 2000\n",
|
|
"Loss:0.58, Iteration: 3000\n",
|
|
"Loss:0.49, Iteration: 4000\n",
|
|
"Loss:0.45, Iteration: 5000\n",
|
|
"Loss:0.43, Iteration: 6000\n",
|
|
"Loss:0.42, Iteration: 7000\n",
|
|
"Loss:0.41, Iteration: 8000\n",
|
|
"Loss:0.4, Iteration: 9000\n",
|
|
"Loss:0.4, Iteration: 10000\n",
|
|
"Loss:0.39, Iteration: 11000\n",
|
|
"Loss:0.39, Iteration: 12000\n",
|
|
"Loss:0.39, Iteration: 13000\n",
|
|
"Loss:0.38, Iteration: 14000\n",
|
|
"Loss:0.38, Iteration: 15000\n",
|
|
"Loss:0.38, Iteration: 16000\n",
|
|
"Loss:0.38, Iteration: 17000\n",
|
|
"Loss:0.38, Iteration: 18000\n",
|
|
"Loss:0.38, Iteration: 19000\n",
|
|
"Loss:0.38, Iteration: 20000\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"w, b = logistic_regression(df.age, df.bought_insurance, 20000, 0.01)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 45,
|
|
"id": "cdac8f71-8ea7-4877-b84e-8beba356d0c9",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from sklearn.linear_model import LogisticRegression"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 47,
|
|
"id": "15cfeb6b-32ba-4ca1-be89-ea3b1438ecdc",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"lr = LogisticRegression()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 48,
|
|
"id": "82f58946-4773-4516-afd0-f3e92b443435",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<style>#sk-container-id-1 {color: black;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">LogisticRegression</label><div class=\"sk-toggleable__content\"><pre>LogisticRegression()</pre></div></div></div></div></div>"
|
|
],
|
|
"text/plain": [
|
|
"LogisticRegression()"
|
|
]
|
|
},
|
|
"execution_count": 48,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"lr.fit(df[[\"age\"]], df.bought_insurance)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 50,
|
|
"id": "152fcad5-e55c-4524-a0a2-c5ee8cf5240a",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"(array([[0.1354656]]), array([-5.26279696]))"
|
|
]
|
|
},
|
|
"execution_count": 50,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"lr.coef_, lr.intercept_"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "4a91cddc-de82-4957-8683-9f56c9485705",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"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.8.0"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|