├── 02-square_error.ipynb ├── 03-estimator_bias.ipynb ├── 03-maximum_likelihood.ipynb ├── 03-ml_gauss.ipynb ├── 04-perceptron.ipynb ├── 05-logistic_vs_perceptron.ipynb ├── 05-roc_curve.ipynb ├── 06-k_means.ipynb ├── 07-mix_em.ipynb ├── 08-bayes_normal.ipynb ├── 08-bayes_regression.ipynb ├── LICENSE ├── README.md ├── appendix_colab.zip ├── ml4se_colab.zip ├── photo.jpg ├── train-images.txt.gz └── train-labels.txt.gz /03-ml_gauss.ipynb: -------------------------------------------------------------------------------- 1 | {"nbformat":4,"nbformat_minor":0,"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3"},"colab":{"name":"03-ml_gauss.ipynb","provenance":[],"collapsed_sections":[]}},"cells":[{"cell_type":"markdown","metadata":{"id":"Z5QvzzUT1eQm","colab_type":"text"},"source":["# 第3章 最尤推定法:確率を用いた推定理論"]},{"cell_type":"markdown","metadata":{"id":"cq2E5xKY1eQo","colab_type":"text"},"source":["## 「03-ml_gauss.py」の解説"]},{"cell_type":"markdown","metadata":{"id":"o1yDlSK21eQp","colab_type":"text"},"source":["ITエンジニアための機械学習理論入門「第3章 最尤推定法:確率を用いた推定理論」で使用しているサンプルコード「03-ml_gauss.py」の解説です。\n","\n","※ 解説用にコードの内容は少し変更しています。"]},{"cell_type":"markdown","metadata":{"id":"jPb2Z3jL1eQq","colab_type":"text"},"source":["はじめに必要なモジュールをインポートしておきます。\n","\n","関数 normal は、正規分布に従う乱数を生成するために利用します。関数 norm は、正規分布の確率密度関数(PDF)を提供します。"]},{"cell_type":"code","metadata":{"id":"kTUQevcv1eQr","colab_type":"code","colab":{}},"source":["import numpy as np\n","import matplotlib.pyplot as plt\n","import pandas as pd\n","from pandas import Series, DataFrame\n","\n","from numpy.random import normal\n","from scipy.stats import norm\n","\n","import matplotlib\n","matplotlib.rcParams['font.size'] = 12"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"dbatlQQl1eQx","colab_type":"text"},"source":["平均0、標準偏差0.1の正規分布から datapoints で指定された個数のデータを生成して、最尤推定法で平均と標準偏差を推定します。"]},{"cell_type":"code","metadata":{"id":"wINVizfQ1eQy","colab_type":"code","colab":{}},"source":["def show_mle(subplot, datapoints):\n"," ds = normal(loc=0, scale=1, size=datapoints)\n"," \n"," mu = np.mean(ds) # 平均の推定値\n"," sigma = np.sqrt(np.var(ds)) # 標準偏差の推定値\n","\n"," subplot.set_title(\"N=%d\" % datapoints)\n"," \n"," # 真の曲線を表示\n"," linex = np.arange(-10,10.1,0.1)\n"," orig = norm(loc=0, scale=1)\n"," subplot.plot(linex, orig.pdf(linex), color='green', linestyle='--')\n"," \n"," # 推定した曲線を表示\n"," est = norm(loc=mu, scale=sigma)\n"," label = \"Sigma=%.2f\" % sigma\n"," subplot.plot(linex, est.pdf(linex), color='red', label=label)\n"," subplot.legend(loc=1)\n"," \n"," # サンプルの表示\n"," subplot.scatter(ds, orig.pdf(ds), marker='o', color='blue')\n"," subplot.set_xlim(-4,4)\n"," subplot.set_ylim(0)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"IV4Jui5V1eQ3","colab_type":"text"},"source":["データ数を変化させながら、結果をグラフ表示していきます。"]},{"cell_type":"code","metadata":{"id":"Ikt4JyEH1eQ4","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":448},"outputId":"6af0487d-6917-487b-b4ad-b0affc258704","executionInfo":{"status":"ok","timestamp":1587541384305,"user_tz":-540,"elapsed":1686,"user":{"displayName":"Etsuji Nakai","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhetRRD1sS-9biTr-QKIKpeab3l7NjR8gRdtuQWcg=s64","userId":"13606123633698401153"}}},"source":["fig = plt.figure(figsize=(10, 7))\n","for c, datapoints in enumerate([2, 4, 10, 300]):\n"," subplot = fig.add_subplot(2, 2, c+1)\n"," show_mle(subplot, datapoints)"],"execution_count":13,"outputs":[{"output_type":"display_data","data":{"image/png":"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v/rqq7Rp04ZevXp585Yq6l6gLnAMeB+YKiLbjTGXGmMyAEQkX0SSCx9AKmB3/KyLuvmDZ56BZcu4T/7Lz/SGVmtg+AOweySseuKc4lOnggjMnWv9nEcwKURTQCBtUw22/CAwUuw5vhyv5S91WH5+PqNHj2bUqFGkpqYyc+ZMJk+ezO7dVlvRypUrefTRR1myZAmpqam0bt2aG28sNU1xHxE57wPoCWSVOPYw8KkLz/0L8HF55Xr37i1K7fj+e5GEBJH0dOvAgw+KDBrk2qNvX5HevV0vX/h48EGXYktISJCoqKhSz73zzjsycOBA58/Lli2TDh06SGRkpEydOlUuu+wyefPNN51lBwwYIA899JBERUVJ69at5bvvvpN33nlHYmJiJDo6Wt59913ntT777DPp0aOHRERESExMjPztb39zKd6ili1bJs2bNxe73e481rJlS1m6dGm5z3333XeldevWxZ5b1ODBg+XJJ5887zV27NhR6nFgg5RTN9SEh9ZftcAPP4gYI3MCbhKwC5GJwh8bC/d1EEJOipVSnX2Upl49kaVLd8iOhHSxJyRIxg23y+leg855nOk3qOL1VBXrLxH/qcO2bt0qYWFhxcoOHTpUHnvsMRERefjhh+Xee+91njt06JAAsmfPnlJf2x31lystWq6OcSg1j6NwrqtS55OSYg2Cr1evcouRBgdbdWBenvtjAzp06IDNZuOWW25h6dKlnDx5stRyKSkpXHvttfz973/nxIkTdOzYkXXr1hUrs379erp168aJEyeYOHEiN9xwAwkJCezZs4e5c+dy3333kZGRAUBYWBjvvfceaWlpfP7557z22mssXrzYea169eqV+Xj++ecB2L59O926dSs2Vblbt25s317+n/Ds2bO5+eabS53mfODAAVavXs3NN99c/v9ApaorEXjoIY7bmjDVPgMw0P8VCDoD/7e42HiswuKlOXnSGlqaSTjHaUwoWQRQYF0n4GwXYl4e+GLheH+tw8BqUNq2bVuxn0t+X/S827mSjQH/h9XkHgYMxOo67FJKudFAfazkqi9wCLilvOvrJ0IlDz8sO5YuFcnKqtzz7XaR7dtFtm61vveAHTt2yC233CItWrQQm80mV199tSQnJxf7NDh79mzp379/kbDsEhMTU+zTYLt27Zznt2zZIoAkJyc7jzVo0EA2btxYagwPPvigPPTQQxWKe/r06XL99dcXOzZx4sRyP1nu379fAgICZO/evWVed9CgQeW+vrZoqWpt/nwRkNuYdbbVyuQLjbee05I1d+75L7Vjxw7Zv19kY0Ke5CX8LKcSdknC/u2SkLhJEjbkS0KCOB++4A91WG5urrRu3VpeeOEFyc3NlWXLlklQUJBceeWVIiKyfPlyadiwoWzevFmysrJkypQpYoyR+fPnl/ra3mrRAhfGODjcAOzBmjr9HvCCiMyufBqo/MKZMzBrFoSGQt26lbuGMdCkifVR8XTJIYXu0alTJ959912SkpLYtm0bhw8f5qGHHipW5vDhw7Rs2bJIWIaYmOLbdDRp0sT5fV3H/ZY8VvhpcP369QwZMoTo6GiioqJ4/fXXSUlJqVDc4eHhnC7x/+T06dNERJx/h5k5c+ZwySWXlLn9xHvvvcctt9xSoViUqlbOnIE//5mf6clsboG6JyDsGIgNjnUtVnTuXJg0qfxLxsZC3YhADtOCSNKpd7I+2PIg4kixcr4Yr+UPdVhQUBCLFy/m888/p2nTprz00ktMmDDBeQ9XXHEFTz31FOPHjycuLo64uDgiIiLOuUd3cinREpFUERkjImEi0kocG7KKyBoRCS9S7kYRaSgi4SJygYj8x1OBq1pk4UJIS7PWzaqK+vUhKMijg+ILXXDBBdx6663nNDc3a9aMpKQk588iUuznipo4cSLXXHMNBw8e5NSpU9xzzz3Fmr1LzhAs+njuuecA6NKlC1u2bCn2vC1bttClS1kThy3nS6S+++47Dh8+zLXXXlvpe1PK5156CQ4e5Pe8jB0bDP0T3NsVgjOKFXM1ySrUsSOcCIjmDHWJyU/BZDaAsKMQeLbP0NeT7WtzHdatWzdWrVrFiRMnWLZsGXv37qVv377O87/73e/49ddfOXr0KOPHjyc/P5+uXbuWei138Pn+GEoxaxa0bg1Vnf0SEADR0VaLlpu35tm1axcvvfSSs8I5ePAg77//Pv379y9WbuTIkWzdupXFixeTn5/PjBkzSE5OrvTrpqen06BBA0JCQvjxxx+ZP39+sfNFZwCWfDz66KMADB48GJvNxn/+8x9ycnL43//+B8Dll19e5uuuW7eOQ4cOOWcbljR79mzGjx9fbquYUtXWkSPw/PN8xHhWM8haK6vX27DpFsg9O040Pr5iSVahVrGGRFoSQg6NT9cBCYCI4ssIeHO5B3+qw7Zs2UJ2djZZWVn885//5MiRI9x6660AZGdns23bNkSExMREpkyZwoMPPkj9+vUrfY/l0URL+dZvv8G338Ltt1vdf1UVHW1dx82tWhEREaxfv55+/foRFhZG//796dq1Ky+99FKxco0aNeLDDz/kT3/6Ew0bNmTHjh306dOn0lOoX331VZ544gkiIiKYPn06EyZMqPA1goODWbx4Me+99x716tXj7bffZvHixQQHBwPw3HPPMXz48GLPmT17NuPGjSs1kcrOzmbBggXabahqtn/8A/uZbP7MC2DsMOI+SG8Kqx8vVuzrryt3+YYNISQ6klNE0kRSMKltIK1VsTLeXFvLn+qwOXPm0KxZMxo3bsyKFStYvny5M/7s7GwmTpxIeHg4ffv25eKLL+bpp5+u1L25yhRtivOVPn36yIYNG3wdhvKFadPg+efhwAF2pqfTqVOnql9z/35ITYUePc6/srwX2O12YmJimDdvHkOGDPFpLL6yc+fOUt9XY8xPItLHByG5ldZfNdDJk9CyJXMyx3Izc6DzRzDhOlg0GzafnUUbH1+xRKu03/WDO07TMms3+4lpdQI4AAAgAElEQVQlhWjO7oVofbA0Bnr3ruL9eJC/12HuqL+0RUv5Tn4+vPsuDBtmrQTvLg0aWIufnjrlvmtWwLJly0hLSyMnJ4fnnnsOETmneV4p5UOvvQaZmfyDR6yfm2+AlI6wpXgfYWVbs4pq2SmCTEJpSjIE5Fjb84SkOc+L+H7F+JK0DnMvTbSU73z5JRw+DHfc4d7rRkRYg+JTU917XRd9//33tG3blkaNGvHpp5+yePFi58wcpZSPnTkDr7zCFwxnK92sY18/D2/8ZM02dJha5gZyFWQMR2hGCDnUt2da3ZQRRzjbsuXbFeNLo3WYe2mipXxn1ixo3BhGjXLvdY2xZiCeOmXtX+ZlTz75JCdOnCA9Pd05JkIpVU289x4cO8aL/AkQiEq0jueFFSv26qvue8kMWz2yCbFatTKaQlAW1Dm7XIGHt2mtMK3D3EsTLeUbp0/DF1/AxInWqu4OdnfVOPXrW7VXWlr5ZZXHuO39VModCgrgn/9kV+RFrGIQxK6GB1tDuy+LFYuPr/xLlDbuuUdPQzJNCCOLyKxgKAg+Z12t6tZ9qEp/LytDEy3lG0uXQm4ujBvnPBQWFsahQ4fIzc2t+i94eLjVfVjGNhPKs0SE3NxcDh06RFhYWPlPUMobFi2CPXt47PSfAAOXPQtZ0bB/kLNIvXqVH5sVEhLCiRMnSq2/AqIbkksQTTgKGU2stbqKrNe1b1/lXlN5hohw4sQJQkJCqnytQDfEo1TFLV5sLcUwYIDzUExMDCkpKRw4cID8/PzzPNlFmZnWWjk5OT6ffeiPAgMDiYqKolGjRr4ORSnLq6+yl9YsYqw1AL7tclj+AuSfHX9Ulc9mMTExJCUlcbyM1Uh/SskiiiOkpTQnP1ggN5Gi2wGvXWstC6Gqh5CQELesGK+JlvK+nBz4/HOYMAFsZwefBgQE0LhxYxo3buye10lIgOHD4e234bbb3HNNpVTNtHs3fPstb/KctQp83/9BTjhsuMdtLxEUFFTmllUAC5cn0ffBS1jMn5nGc6WWqQYrLik304/5yvu++QbS02HsWM++Tp8+0KYNfPCBZ19HKVX9vfUWeQTyDrdB4Bm4YBFsuQlyIp1FPN3wPe6BGD5jFLfzNoHkQf9/w4B/evZFlc9poqW8b/FiawxVVUacusIYq9Xs6691rJZS/iwnB955h0+4hqM0tboK/7sbVj9WrNjdd3s+lPXd76YpRxnNEmi5Di59zkr8HObN83wMyrs00VLeVVAAS5bAiBHghkGG5brmGus1v/rK86+llKqeliyBlBRmMuXsscwmkN7c+WPz5u5d0qEsz/10FQdoxd28AQn3Qt2T0PVsq/uDD3o+BuVdmmgp7/rhB2sfwjFjvPN6fftaK8V/8YV3Xk8pVf3MnMkBE8tyhkLbr+C2y86un+Vw6JCXYrHZeJO7GMrXtN3fAo53gj6vOU+fOKGtWrWNJlrKuxYvtpZdGDHCO69ns1lb/CxdWv1WBVRKed6ePbBiBW/KnQgBcNGr0GiXtcSCQ2ysd0P69ZLbycfGXbwFCVMh5kdo9pPz/LRp3o1HeZYmWsp7RKx1bOLjISrKe687ciQcPw668a9S/uett8jHZg2CjzwIHT6Fn++AgjrOIs8+692QPljTnG8jruFW3sW2aSL8cnWx89VtSx5VNZpoKe/ZvRt++80aN+VNV11lDYzX7kOl/EtBAcydy1KGc5gW0GsWGIGfzo56DwuDSZPOcw0PGTrnFppwjKG5P8L7n8CR3sXOa/dh7aGJlvKeZcusr8OGefd1GzaE/v2ttbuUUv5j1So4dIh55iZrM+fus2HvFZAW5yzyxhs+im34cHLCGzCZudbPkQeh6Sbn6Xvct7yX8jFNtJT3fPUVtG8P51nQz2NGjrS6Do8e9f5rK6V8Y+5c8kIiWCJXQ0A+fP8HWPdwsSK+aM0CIDiYOjddz1gWEU463HQVDH/AeTojQ1u1agtNtJR35OTAt9/ClVf65vULB99/+eX5yymlaoczZ8h7/yPmZl9LNnWtjZx/vB9+u8rXkZ01eTKhnGEcC2HLZIhdA/X3Ok97Y10v5XmaaCnvWLcOsrKs8VK+0KMHNGum3YdK+YtPPyUoO505TIagLOg5C+qcLlbE5/sKXnwx+wLaWN2Hm28CMdBtjvN0ZqYPY1Nuo4mW8o5lyyAwEAYP9s3rG2O1an31FeTl+SYGpZT3zJ1LEi1YxSBru53Rd0LTjc7TwcHwyis+jA/AGNJHTyaeFTQ/HQD7Lofu7wFnNzzU7sOaz6VEyxjTwBizyBiTaYw5YIyZWE75YGPMTmNMknvCVDXesmUwcCBERPguhuHD4dQpWL/edzEopTwvJYWCz5cyn4nWBtI9ZsPJOEi81Fnk7bd9OD6riG7PTyIA4Ubeh023QL0D0Hi787yuqVXzudqiNQPIBZoAk4DXjDFdzlP+EeB4FWNTtcXRo7Bpk7PbcN48iIuzNnCNi/PiJ7bLL7datlas8NILKqV8YsECbPZ85jIZIpOgzdew+WaQs//kVYckC4AOHVhPX25iDuy4Fv6VBMe6Ok/rmlo1X7mJljEmDBgPPC4iGSKyFvgEuKmM8q2BycDf3RmoqsGWL7e+Xnkl8+bBlClW5SEmjwOJBUyZ4qVkq3596N3b2mRaKVV7zZ3LFi5kK92g21xr7awtZ//JqlPnPM/1gQOXTKY7W+icvxcymp5z/t57fRCUchtXWrQ6APkisrvIsc1AWS1a/wUeBc6UcR4AY8wUY8wGY8yG48e18atWW7YMoqPJ734hf3z5R7KyAAR+3wr+GkXW9ZcydcnvWf7bcs/HEh9v7beYkeH511JKeV9iInz/PR+YG6yfm2yBxAGQ2s5ZZNYsH8VWhgkLrsWO4To+hLCjcHM8dFroPD9zpg+DU1XmSqIVDpwucewUcM5gG2PMWMAmIovKu6iIzBSRPiLSJzo62qVgVQ1kt8Py5Rwb0J3eb11Ect87sAZ6Gvj2adh4Oxg76R3e4Mq5V/L4N497Np74eMjPhzVrPPs6Sinf+OgjABbIBOvnj+fDnK+cp+Pjq1G3YaFmzQgYdBkTWACZDSF6B1x4tpm/oMCHsakqcyXRygAiSxyLBNKLHnB0Mb4IPIBSDpk//QBHj/KI+Zq07DSitz919uTPd8LS/8Db39Fqfhr/HPpPrutyHQB5BXnYxQObQF9yidVvoOO0/Iark3mMMb83xuw1xpw2xhw2xrxsjAn0dryqihYsYIutJ3toZ60GD5AXBlh/+tV25MCECXRmJ13YBdsnQIfPiy1HobMPay5XEq3dQKAxpn2RY92B7SXKtQfigDXGmGRgIdDMGJNsjImreqiqpjmdc5qZ/7L+Tet6/f3s/N1OXp4yjtBQU6xcaCg893QwDw94mG5NulFgL+D6j65nyqdTKLC7+aNc3bowYEA1rm2VB7g6mecToJeIRAJdseo5/eBYkxw4AOvXM79gAiBwd0+49Dnn6Zwc34VWrnHjsJsAq1Vr2w0QmAMdlzhP65Y8NVe5iZaIZGIlTdONMWHGmIHAaGBOiaLbgJZAD8fjTuCo4/uD7gxaVU8lZxMu+rAul/yWT0bLpjxyw38IDQpl0iRrvEFsrDUBMDbW+rloU36ACaBr467M2jiL25bcRr49372BxsfD5s2gYwNrvYpM5hGR30QkrfCpgB1oV7KcqsYc3YYfch00+xmaboGMJj4OykVNmxIweJCVaCX1g7RY6Pp/ztO6JU/N5eryDvcCdYFjwPvAVBHZboy51BiTASAi+SKSXPgAUgG742ftYa7lis0mrJvCgRPJ/G6KjW47sgi/cmSxspMmwf791vCt/fvPHS9hjGH6kOk8M+QZ5myZw6SFk9ybbMXHW1+//dZ911TVVYUm8xhjJhpjTgMpWC1apW45rJN5qqkFC/iJXuylrZWkFATBrrG+jsp1EyZwAb9wIdtg7Z9hz7Bipx980EdxqSpxKdESkVQRGSMiYSLSSkTmO46vEZHwMp6zUkRi3Bmsqr6mTbN22MEUwLhJMHEU7c5spk7myUqvBj/tsmn8Y+g/WLB9AdNXTXdfsH36QGSkjtPyDy5P5gEQkfmOrsMOwOtYrfKlldPJPNXN/v3w448sYII1NqvrB7DnKjjTwFnE51vulGfcOApwdB9umGrtzVjEiRM+iktViW7Bo9zCuajepc9Bu69gw90MZpV1bNCgSl/3jwP+yKOXPMqI9iOqHmShwq2AdJyWP3BpMk9JIvIr1jjUVz0Ul3K3ot2GMd9D1EFrrFMRPt9ypzyNG3OsyxAr0UKswfBtl/k6KlVFmmipKps3zxpvResVMORvsHky/Hwng1nJ/sC20LJlla7/bPyz9I/pD0BOvptGs8bHw9691qdgVZu5OpmnNIFAW49EpdxvwQI20Jt9tIHTMbD6UfjlGudpm60aLutQimYPTKADv9KdzXDxSzB5OIQf8XVYqgo00VJVNm0aSPhhGD8RUi6Az1/DIFzGavIHDnbb6zzx7RNc/t7l5BW4YVPownFa2n1Yq1VgMg/GmDuNMY0d33cG/groL0hNcOAAJCTwEddaP5+KhW+ehdyzPcSzZ/sotooaM4YCAhjLIqtFzgh0/sh5WgfE1zyaaKkqS0wEbDlwqC8s+BByw+nGFhpwknZ3DXHb63SJ7sK6g+t48bsXq36xzp0hOhpWrar6tVR1V+5kHoeBwFZjTCbwhePxqNejVRW3eDEACxkHjXZC+y8goPgHsprQmgVA48asD7zESrRSOsGxztD5Y+dpHRBf82iipaqsVSsgrTW8/ykctyZzDWaldbIK47NKur7r9Vzb+VqeWfMMe0/urdrFjLFi00Sr1nN1Mo+I3CYiTRzl4kTkERHJ9l3kymWLFvFLUBd+pQP0eR2uHweBZ9+6wgbsmiL4hrF0Yytt2WNtNN1qDYQdA6wB8dqqVbNooqWqJCM3gzYP3k1Ik+JLpcXbVnK6STuIce/E039f9W8CAwK574v7EJGqXWzQIKs5TsdpKVVzHT8Oa9awIG+sNduw00JrtmGRbsOaNu+lz9NjAKxWrZ3jIcAObc7exN13+yoyVRmaaKkqmb5qOt+ensmfnkl0LkIa18rOlSGribx6sNtfr0VkC6YPns7K/SvZk7qnahcrXHZi5cqqhqWU8pVPPgG73eo2bJ4AUUlWK5CDzebD2CorLo4Tcb2sROvohfDfXbD17M5RmZk+jE1VmCZaqtK2HdvGyz+8zB097+CpOwc6FyHdt2RLldbPKs/9/aztfH78sn2xlegr3JzeubO1sI52HypVcy1axH5i2UQPayxTQRDsvtp5uqZuyNzwjrEM4HuacQROdDzn/L33+iAoVSmaaKlKEREeWPoAUXWieOGKF4qfLFxx3Y3js4oKDAhk7eex3DVFOJC+BxFr0tGUKRVMtgIC4LLLtEVLqZrq9GkKli1nEWMBAy3Xwd54yK7nLBIb67vwqmTcOABGswSC062FoLt84Dz9+uu+CkxVlCZaqlKW713Ot/u/5cnBT9IwtMRyyytXQjv3j88qato0ONPnWZjazbnGTFaWdbxCBg+2xmglJro7RKWUpy1dii0/1+o2BHhnNSwqvnLHs8/6IC536NSJo1EdrO7D3HBo9R10m+s8XdUhqsp7NNFSldKjaQ8eu/QxpvSeUvxEQQGsXu2xbsNCiYnA1hutKdyDni5+vCIKW920+1CpmmfRIo4RzToGWD9LAGQ1cp6Oj69ByzqUZAxNpo5jCN9SjzTYOQ7afmWtFq9qFE20VKU0DmvM05c/TbAtuPiJLVsgLc3jiVarVsDJtvDzXdDrTaj/29njFXHhhVC/vnYfKlXTZGeTt+RzljAaOza4+Qq4aEaxIjVttuE5xo4liHxG8RnsGA+BudDhM19HpSpIEy1VIfn2fCYvnMwPST+UXqAwYfFwovXssxAaCqx6HOxBMOQJQkMr0U1QOE5LW7SUqllWrCAoO8PqNozeAW1WAMbXUblXnz6cDGthdR8mXQzpzaCTtXhpWJiup1VTaKKlKmT2ptnM2zqP5Izk0gusXAnt20OLFh6NY9IkmDkTYhs2g/UPYGu7kn+/frpy3QSDBsFvv0FSktvjVEp5yKJFnCaCb7jc2qJGDOwc6zxdI5d1KCkggPq3jWVU4JeEkQ0//g6OdQWsJR5uv12TrZpAEy3lstyCXJ5a9RR9W/RldMfR5xbw0visQpMmWePYT382jVPP7OaumyIrd6HCeLVVS6maoaCA7A8/4XNGkksdq5Xn4ADIaOYsMmXKeZ5fk4wdS3D+GcaFLYM102DlU85Tubm6JU9NoImWctm8LfM4ePogTw56EmNKaaL30viskiLqRBAWHEa+PZ/UM6kVv0C3bhAVpYmWUjXFd98Rcvq4taxDgz3QdEuxRUoBXn3VR7G522WXQYMGDM1YaP0ckA/R252nT5zwUVzKZZpoKZcU2At44bsX6NG0B8PaDSu9UOH4LA+tn3U+drHT+oWetJryYMUXMLXZdD0tpWqShQvJpg5LGW79/PMd1qw8h4YNy3heTRQYCNdcwyg+I5A8uOoPcGf/Yns5qupNEy3lkgIpYErvKTwz5JnSW7PAa+OzSvP+/ACSv7uSzDbvI1H7Kr6A6aBB8OuvcPiwR+NUSlWRCCxaxHKGkkEEpLaDT96CU2enHL/yig/j84SxY6lPGoNZCbtHQp0Ma6kHBx2nVb1poqVcEmwL5g8X/4GRHUaWXqCgwOp683K3YaFp0yB/9R+sdXQG/gOo4AKmup6WUjXDxo2QmGh1G4Ydg2Y/A8VX76yxa2eVZehQMghjHAth/xA4U885+xDgnnt8GJsqlyZaqlxrE9fyzsZ3yCvIK7vQ5s1w6pTPEq3ERCC9BWy6FXq+DeHJZ4+7okcPiIzUREup6m7RIgoI4BOusVZKv7s31N/n66g8q25dTvQdzmiWYAoC4ZfR0PETsOUCkJHh4/jUeWmipcr12DeP8cTKJxDOs+eDD8dnQZGFSr/7k7VafPfZxY+XJzAQLrlEEy2lqrnDMxaymss4QSOrVSe5O5xs4zwfUEv/VYt9aBzNOUI/1luLl9ZNg7iVvg5LuaCW/koqd0k4lMCqA6v4Q/8/nLsKfFE+HJ8FRRYwTW0Hb/0A6x6p+AKmgwfDrl2QXMYaYUop39q9m+Ynd1jdhhGHodW6c2Yb3n23j2LztBEjyCXI6j7cOxTe/Qb2Xe48reO0qi+XEi1jTANjzCJjTKYx5oAxZmIZ5X5vjNlrjDltjDlsjHnZGBPo3pCVN738w8tE1onkzl53ll3Iy+tnlca5gGksmCMX0bBBACF1hZtuqsAMxMLWuNWrPRmqUqqyFi0CYDFj4ALre3aML1ak1izrUFJUFLtbXWGtEp9fxxqrZT/7z6suXlp9udqiNQPIBZoAk4DXjDFdSin3CdBLRCKBrkB34AF3BKq87+Cpg3y440Pu7HknEXUiyi7o4/FZhQoXMJ0zB9LbzSJ1bH+EAtdnIPbqBeHhusyDUtVUypsLSaAPB2kFHT+F450gpZPzfFiYD4Pzgq6PjaUdv3EhW6HuCbjyYYixtkPTxUurr3ITLWNMGDAeeFxEMkRkLVZCdVPJsiLym4ikFT4VsAPt3Biv8qJjmcfo3qQ79/e7//wFfTw+q6Rp0yA3PQpifrQqY1ycgajjtJSqvpKSaPTbj9behgAfLIQPPi5W5I03fBCXN40eDcY4WrVC4KLXrAkBDrp4afXkSotWByBfRHYXObYZKK1FC2PMRGPMaSAFq0Wr1F99Y8wUY8wGY8yG48ePVzBs5Q29m/dmw5QNxNWLO39BH4/PKikxEdg1BtJiof/LxY+XZ9Ag2LEDjh3zWHxKqUpYvBjgbKKVF1qsNQtq4bIOJTVuDJdcYo3TyguDX4dDp4Vg7L6OTJ2HK4lWOHC6xLFTQKl9SSIy39F12AF4HThaRrmZItJHRPpER0dXIGTlDZuSN5GWnVZ+wWowPqukVq2wxi6svx/iVjvW2XFxBmLhfeg4LaWqleTXFrKDTuymIwx7EHoX/wwfG+ujwLxt3Di6s4U2/AY7x0PEEYj53nlax2lVP64kWhlAyd16I4H08z1JRH4FtgO1dWhirWUXOxM+nMDYD8aWX7iajM8qyjkD8ec7IScc+r/s+gzE3r2tgR7afahU9ZGSQqMdq63WrJCTcNGr0OC3YkUqNMO4JhszBsDqPtw9CvKDofPZLtQ77vBVYKosriRau4FAY0z7Ise6YyVR5QkE2lYmMOU7X+75kl9Tf2VKrynlFy5MSKrJ+CwoMgOxaRQs/R9ND/6OmTNd7FYICoIBA3RAvFLVyaefEkiBlWh1/ARs+efMNqz13YaF4uKgVy8r0cqJhB3XQUGQ83RODtx7r+/CU+cqN9ESkUxgITDdGBNmjBkIjAbmlCxrjLnTGNPY8X1n4K/ACveGrDzt1YRXaRrelPGdx5dfuJqNzypUOANRNt7CkYT+FauEBw+GbdsgJcVD0SmlKmThQvYTy0Z6Wq03p2Lg8EXO01On+jA2Xxg7loGsoylHYOFc+PqFYqdnzvRRXKpUri7vcC9QFzgGvA9MFZHtxphLjTFFF/8fCGw1xmQCXzgej7ozYOVZ+07u44tfv+CuXnedf4FSqJbjs0qz+8RuHvnqEfLt+a49obB1bs0azwWllHJNejp5S5dbi5QGOzZT3jnO2tfUodaunVWWcdaEgDEsdhwQa7kHh4ICH8SkyuRSoiUiqSIyRkTCRKSViMx3HF8jIuFFyt0mIk0c5eJE5BERyfZU8Mr9lv22jAATwJTeLnQbbtkCaWnVPtHalbKLf37/Tz755RPXnnDRRVC3rnYfKlUdLF1KUEGO1W0YmgJ7r4DtE3wdlW916sSegA5W9yHA6Dvgzv6U3FxbVQ+6BY8q5p4+97D/of3ERMaUX7iarZ9VlpHtR9IqqhUzEma49oTgYGuclg6IV8r3Fi7kGNGsYwCktYb5n8HBgc7TNpsPY/MVY8gZOY4hfEs9TsKhvtBwDzTZ6ixyxRU+jE8Vo4mWciqwW+3NLiVZUG3HZ5VkC7BxT+97+GbfN+w8vtO1Jw0aZLXYpaZ6NjilVNmys8le+DmLGYM9MA8ik84pMsWFxvfaqMtjYwkin1F8Zq0bKMbaZNthhY6OrjY00VJOQ2YP4S9f/8W1wjVkfFahO3vdSbAtmFcTXBzMMXgwiOg4LaV8acUKQvIyrG7DdkvhDy2hxfpiRfxufFahPn0gJsZavDSjKRy4tNgyD6r60ERLAfDT4Z9Yk7iG5hHNXXtC4fisat5tWCg6LJrbe9xO3aC6rj2hb18ICdHuQ6V8aeFCThHJN1xuJRFZDeFIL+fphg19GJuvBQTAmDFcxTJCybQWL228HRr+4uvIVAmaaCkAXtvwGqFBodzc/WbXnlBDxmcV9dqo13hx6IuuFa5TBy6+WAfE1wLGmAbGmEXGmExjzAFjzMQyyj1ijNlmjEk3xuwzxjzi7VhVEfn5pM35hM8YRZ5NoMOnsGs02M+uGfXKKz6MrzoYN45QznAVy2D7dfDRfDhtDf3o3NnHsSknTbQUJ8+cZP7W+Uy+cDL1Quq59qSVK6FdO4hxcTxXNSEiJBxKQMSF2TmDBsGmTVbLnarJZgC5QBNgEvCaMaa0vVoNcDNQHxgG3GeMucFrUari1q6lXl6K1W3YZgWEnLZabRyCg/1okdKyXHopNGzIrVGLIKMZbLvR2gMRax1B3Y6netBES/Hupnc5k3+Gey9ycTnhGjY+q6gPd3xI37f6sibRhbFXgwbpOK0azhgTBowHHheRDBFZC3wC3FSyrIi8KCI/i0i+iPwCLMFaG1D5wsKFnCGELxlmDfLOjoS98c7TeXk+jK26CAyEa65h8OlPCSLXWv5i4IsQlUhWFtx9t68DVKCJlgLGdRrHjBEz6N60u2tPqCHrZ5VmVIdR1Aup59pSD/37W12IOk6rJusA5IvI7iLHNgOltWg5GWMMcCllbDVmjJlijNlgjNlw/PhxtwWrHETInLeIZVxFFmHwzTOw4CMoqOMs4tIm8f5g7Fgi5RSDWQl1TsPQP0PnDwHIzNTteKoDTbQUsfViXW/Ngho5PqtQaFAot/W4jYU7F3Ik/cj5C4eEQL9+Ok6rZgsHTpc4dgqIKOd5T2LVj++UdlJEZopIHxHpEx0dXeUgVQkbNhCWmmR1G4LVLbZ3qPO0MX60iXR5hg4l04RZsw9PtoEjPaHzR87Tr7/uw9gUoImW33t29bOs2FvBBVdq6PisQlP7TCXfns+bP79ZfuEhQ+Dnn+HkSc8HpjwhA4gscSwSSC/rCcaY+7DGao0UkRwPxqbKsnAh+dj4jFHQ939wYfHBRnPm6Pgsp5AQUi4awVgWEUCBtdl2yx8g8iBgjX7QVi3f0kTLjyWeSuSJlU+wYl8FEq0aPD6rUPuG7bmq7VV8vPPj8gfFx8dbNZW2atVUu4FAY0z7Ise6U3aX4O3AX4B4ETl3dUzleSLw0UesDRrCyYBIGPQUdPjMeTo2VpOskmL/eB1NOMalrDm7PVGXD53ndZNp39JEy4+9seENAO7uXYERkzV4fFZRI/Lf5OQ/fsBmM8TFnWd2Tr9+EBqqyyzXUCKSCSwEphtjwowxA4HRwJySZY0xk4DngKEiste7kSqnzZthzx7+zz4BWn8DYSmw/XrAmmmoXYalGDGCnMBQJrAAUtvDoYucLVqgm0z7miZafionP4e3Nr7FqA6jiK0X6/oTa/D4rELz5sFff9eSg3vrIiIcOGBt41FqshUcDJddpolWzXYvUBc4BrwPTBWR7caYS40xGUXKPQM0BBKMMRmOh45w8bYFC8jHxkcFY6HLB9Zswz3DAIiI0NasUoWFUWfsSMbzsdV9OOs7WPay87Rf7gdZjWii5ac+3vkxxzKPcW+fCnbe1/DxWQDTpkFWFtDiR7i/A0TvICvLOojgTJUAACAASURBVF6q+HjYtQsOHfJmmMpNRCRVRMaISJiItBKR+Y7ja0QkvEi51iISJCLhRR73+C5yPyTCsRkLWEE8J2yR0Gkh/DIa8kMA3Xr0vCZMoAnHuIzVZxd1teUC/rsfZHWhiZYfi28dz9C2Q8svWCg/31rqoIZ3GyYmOr452RqiEqHPa8WPlxTvWLvnm288HptSfm3jRhqf/o0FTICIQ3CyLWy73nlal3Q4jxEjIDSUpzovsFqwhj8Adwxk6lQ/3g+ymtBEy09NvHAiX9/8NQGmAr8CGzbAqVNwxRWeC8wLnJV1VrQ1cLTHbAhOJyCgjO7D7t2tTdW0+1Apz1qwgDwCWcwYSGsNMzfAryOcp3V81nmEhsKoUVyWspD87Hz+9XhraL6B3z/9q68j83uaaPmhhEMJ5BbkVvyJy5dbC9jEx5dfthp79lmrTgIg4XdQJx26zaOgoIyxWgEB1jIPK1ZYM6KUUu4nQvrbC/iaK0i1RUBw4fA54yyi47PKMWECHDsGq1ezcd51AHQY9wHGQHi4bsnjK5po+ZF586BV+1P0fXUwjSY+XPE/uuXLoWdPaNTII/F5y6RJ1nRnmw1I6geHe8FFMwApe6xWfDwkJcGv+ulQKY/46Sciju+zug3bfw6PREOTzb6OqmYZPhxCQ1lz/wLmzIiBA5dYEwqwVom/+WZNtnxBEy0/MW+e1VpzsOFsCM4ifc2tZc+0K016Onz/PQytwJiuamzSJLDbAQx88yx8Ox2M1VpV6litwlY87T5UyjMWLCCXIKvbsOsHkBsOx8/ulBRbgcnRfis0FK6+mo47FmIj31oWo8k2iLaWjbPbzzPpR3mMJlp+Yto0yDpjh4tehaS+cKT3+WfalbRqlTUYvpYkWlBkrNaeYbBrLEhA8eNFtWsHLVtqoqWUJ9jtsMDqNkyrY4OOS2DHdWAPdBbR8Vkuuv56GnOceFZYY1C//BdkNHWePnDAh7H5KU20/ERiItBmOTT6BX68v/hxVyxfbu39N3CgR+LzhWJjtUKPw+C/UTf6SOkVeuHYtG+/1dX/lHK3devgwAE+Db8RLlgEQdmwZbLzdFiYjs9y2fDhpBHFROZDZmP44fdwpmGxItp96F2aaPmJVq2AC5ZARhPYfl3x465YvtxauDMkxCPx+ULhWK3YWKBuGgyezojH3yq7Qh861FrI5+efvRmmUrXfvHlQty6DXx6D6THXWnrl4MWAtWbwG2/4OL6aJCSE7RdcyzgWEsIZCMyG7u8VG+92dwU2A1FV51KiZYxpYIxZZIzJNMYcMMZMLKPcI8aYbcaYdGPMPmPMI+4NV1XWs89C3W9nwJvroaAOYLXmuNQcn5QEO3fWqm7DQpMmwf79ICnW/oc/5L1Bvj2/9MJDh1otW19+6dUYlarVcnNhwQL2dx/Nn5+JQL74NwGfvwEYYmPh7be1NauiBs6YSAQZXM2nYApg5L3WsBGHzEwfBueHXG3RmgHkAk2AScBrxpgupZQzWLve1weGAfcZY25wR6Cqam64sYA3Zxpi68VijNWKM3OmixXY8uXW1yuv9GiMvnbvRfdyKP0QS3YtKb1AdDT06aOJllLu9NVXkJrKwxsnWeOHjnfBvmeo84OgJlmVMGgQaWHNre7DvDDYORa6LABbjq8j80vlJlrGmDBgPPC4iGSIyFrgE+CmkmVF5EUR+VlE8kXkF2AJUHsG9dRQ6TnptH6lNXLhXPbvt8ad7t9fgQps+XJo0gQuvNCDUfreyPYjaRXVihkJM8ouNGwY/PCD7gWilLvMm0dqQEM+ybkK4h+FlusAKjZZRxVns1Hv7hsYwRfUJxW2TrKGR7T/wllEx2l5jystWh2AfBHZXeTYZqC0Fi0nY4wBLgW2l3F+ijFmgzFmw/Hjx12NV1XCe5vf4+Dpg7Rr0K7iT7bb4euvrdXgjSm/fA1mC7Bx30X3Ub9u/bIXdB027Oz/E6VU1aSnw5IlfGCfQH70r3Dp36H5BudplyfrqHNNmkQweYznY9h7BWQ0hm5znac1ifUeVxKtcOB0iWOngIhynvek4/rvlHZSRGaKSB8R6RMdHe1CGKoy7GLnfwn/46LmF9GvRb+KX2DjRjh+vNZ3GxZ6ZOAjfDzhY4JtwaUX6NsX6tfX7kOl3GHxYjhzhq+bTIIL54HdpnsbukvPntCxI5OYZy2Tse1GiEyyxmyhSaw3uZJoZQCRJY5FAullPcEYcx/WWK2RIqKdwj709d6v2ZWyiwf6PYCpTIvUZ59ZLVnDh7s/uGps94ndnM4p+fkCCAy0BsV/+aVux6NUVc2bR0pEHIuO9bdaW34bCplNgApM1lGlMwYmTWIwq4jhICx/Ed5aD2IDNIn1JlcSrd1AoDGmfZFj3Sm7S/B24C9AvIgkVT1EVRX//fG/NA5rzHWdryu/cGk+/xz69bMGgvuJPal76Pi/jsz6eVbpBYYNgyNHYOtW7wamVG2SnEzBV1/zRvpEpPU3UC8RNt0KWOtmuTxZR5XN8T/w9qA5UOBopQ/K0iTWy8pNtEQkE1gITDfGhBljBgKjgTklyxpjJgHPAUNFZK+7g1UV99Tgp3hj1BvUCaxT8ScfPQoJCTBypPsDq8baNWjHpa0u5T8//ocCeymLk151lfVVuw+VqrSffz8HmxQwm1ugbioc7Qq/jAYgO1uTLLdo0wYGDeLhBu8Q20qg7TJ4pDFZYTuYNk0HxHuLq8s73AvUBY4B7wNTRWS7MeZSY0xGkXLPAA2BBGNMhuPxuntDVhXRq1kvxlwwpnJPXrrU+upniRbAg/0eZH/afj755ZNzTzZvDt26nf3/o5SqGBEiP3qbtQzkVzpYe/K9tgXyrQWRdfMFN7rtNiKP7mHmLd9RN62XtcRDz7c5cICK7XerKs2lREtEUkVkjIiEiUgrEZnvOL5GRMKLlGstIkEiEl7kcY+ngldly8jNYMqnU9h9Ynf5hcvy2WdWUtGjh/sCqyFGXzCa2KhYXln/SukFhg+HtWvhdCnjuJRS5/fDD7TL38U73AaRByEgH2sZRovN5rvQap1rr4XwcE7+6x3OnIiGX66xVooPyCMrCx580NcB1n66BU8t9d7m93jz/9u78zib6v+B46/PnTv7GIydmBFG9jCkfAspUoQshcpU9hRRKstPSiHKV0JZsu9rSr5EyBIZRWVfh6xjbLPP3Duf3x9HwwgzY+6dM3Pv+/l43Ifmns987vt07v3c95xzPu/Pb1O4lHCP9Z6Sk41Cgs884/JlHW7HarHSu25vdpzewelrp//doFkzY5Htf4q5CiEyb/p04pUfi2gPHVpChxbpNnfrZlJcrsjfH9q35+m4RfgTC7+/Cv5RELoKgOhoOavlbJJouSCtNeN/HX/vJR3AOFsTE+OWlw3/0b12d072PUmpwFL/3li/PgQFGdPThRCZFxcHCxZw9j/tsYUcgRK/w+Eb40zjxjBx4l1+X2TdK6+Qj1jasgSONoWYElDzm7TNclbLuSTRckGrj6zOXkkHMGYbenkZo56byuedjyL+RdBak2JPSb/RaoUWLYzLqykpt+9ACPFvS5dCTAzlhr/Co32+AZs3/NmR4GCYM0dqATtF/fpcK16BV5hu1NRaOQXW35h2KGe1nEsSLRf06dZPKR1YmuerPJ9x4zv5/nto2BACAjJs6spS7Ck8Ov1RhmwY8u+NrVrBlSuweXPOByZEXjV9Ohfyl8fjiTr8eG4u6kBreoYHZW1ZMJE1ShH4RjgN+Jn7OWqcQbyQfkk1qRTvPJJouRhbqo1aJWox8NGBeHp43lsnR47AoUPQvLljg8uDPD08KRVYikkRk/5dwLRJE/D1lcuHQmTW0aOwcSPjroaTGroSfC+jd3Vl0iTo1cvs4Fxc586kKgtdmGr8XHw3PP26VIrPAZJouRirxcrnTT+nR1g2JnsuW2b826LF3du5iXceeYdrSdeYsmtK+g1+fkaytWKFVIkXIjO++gobHswgHPa1g5nr4HgjwChQKpyoVCksLZ+li5qGF0kQdATqToQKRpkaqRTvPJJouZATV07w49Ef0dn90l+yBOrUgZAQh8SV14WVDKNRSCPGbh/778WmW7WCU6eMNSGFEHeWkEDs+G9YTmvOUAq0BY435p+yDlI7Kwf06kURHUVHr6VwoCVcKwl1JkileCeTRMuFjNoyiubzmxMVH3XvnURGGtXg27Z1XGAuYED9AZyOOc3Cvxam39C8OVgscvlQiIwsXEhA0iUm0gua9IfHPkq3WWpn5YDGjaFCBUaFTCS4tCfs6gYV/ke8zxGpFO9Ekmi5iAtxF5i+ezqda3SmqH/Re+9oyRLj3zZtHBOYi2harimzWs2iTeVb/r8ULgyPPiqJlhAZuPjRRPZRiY0+1aDORMh3Nt12qZ2VAywW6NGDooe2MqHbHnz3dQO7FcImSaV4J5JEy0V8tu0zku3J9H+4f/Y6WrIEataEcuUcE5iLUErxUo2X8PP0+/fGli2NBaaPyfKeQtzWzp0UPrbTOJtVazp4JsLO9He/S+2sHBIeDj4+XBkxiYSoEsZZrfgiAFIp3kkk0XIBF+MvMmHnBF6o+gIVC1e8945OnYLt2+Wy4V0s3beU5xY+l/4+uFbX15L852ygECKdo/0nEos/s+gEdSbBicfgQtW07W5eRSZnBQVBhw60jJ1DPq7BDxNgy3tpm6WmluNJouUCDl48SH6f/Ax6NJuFUP6ZbSiJ1h3FJMew/MByvj/0/Y0ny5aFhx6CefPMC0yI3Co6mpKbFzCbl4ipuBkKHoedr6dr8tVXJsXmrnr1IoA4XmaW8bNKhft/BIw/IOWslmNJouUC6pepT2TfSKoUrZK9jpYsgerVITTUMYG5oE7VOlG2QFk++vmj9Ge1OnWCPXtg717zghMiN5oyBV8SjcuGl8vCzp6w/7m0zf7+Uqg0x4WFEVW+Hn35LxbsUHkxvNwEyhlrt8pZLceSRCuP231uNyn2FKwWa/Y6OnMGtm6Vs1kZ8PTwZOCjA9l5Zidrjq65saF9e2PalJzVynWUUkFKqeVKqTilVKRSquMd2jVSSm1QSl1VSp3I4TBdU1ISjBvHWp7kL6oZ1chXTTSWgbnu669NjM+NFRn5NuU5SmuWw4HWRqmH+p+mbe/e3cTgXIwkWnnYlcQrNJzRkDdWv5H9zhYvNopuSqKVoZdrvExhazAtxw5DWTQhITB3XTF44gkj0ZLipbnNBCAZKAZ0AiYppW53+jcO+AZ4Jwdjc21z5sC5c3zKAKj7JRTZl26zUnI2yzStWnGtWHneYTTYPWF7X7h/PZTYBRhrf0u1fseQRCsPG/vLWK4mXaVbbQfMi545E2rXhkqVst+Xi1u8wItri8eS/NMA0KRNi94W0hFOnDAmFIhcQSnlD7QBhmitY7XWW4CVwEu3ttVa/6q1ng3I9FFHSE2F0aP5y6sm6wuVgmZvQtUF6Zr0yMYCFiKbPDwIHNqPh/iVR9lszD5MDIT6o9OaSLV+x5BEK4+6EHeBz375jLaV21KrRK3sdbZnj1HZPDzcIbG5ukGDIHlPa+N0+/Wq1vHx0O2HVuDjIzc35C6hgE1rfeim5/YA2bqhUSnVTSkVoZSKiIrKRoFgV/bdd3DwIMOTB8Ajn4PNG37tna6JlHQwWXg4ifkKG2e1kvJDRA8oGQHWBECq9TuKJFp51PCfh5NoS2R4o+HZ72zGDPDygg4dst+XG0hbfNUjCRoONW4kBfb9HQjPPguLFkFKinkBipsFALesBs5VIF92OtVaT9Zah2mtw4oUKZKdrlzWX50/5TghLPGvDzVmwe5wiLtRTDk42LzYxHW+vvj0700LvqcS++DnIfDlAbD5AlKt31Ek0cqDbKk2tv+9nVdrvpq9ulkAycnGfRTPPguFCjkmQBeXtvhqqidUXAlPvgseycbzHTtCVBSsW2dmiOKGWCDwlucCgRgTYnEba4duperVbXxGf+z1/wsWG/zSL227rK2Xi7z+OslWX+OsVnKAMVHBMx58rki1fgeRRCsPslqsbO+ync+bfp79zn74AS5elMuGWfDxx8YXBdoC60dAweN41ptsfHE89ZRREHD6dLPDFIZDgFUpVeGm52oAUofDibw+Hc5FCjGdV8DuBb91gUs3DsHkyXITfK5RuDBevbrysppNqOWIcdmw9wNUfXOIXNp1EEm08piTV09yOeEyFmUhwMsB5ZSnT4fixaFp0+z35SY6dTK+KIKDgaNN8T7bEN+nPqJlu1jw9obOnWH5cjh3zuxQ3Z7WOg5YBnyolPJXStUHWgKzb22rlLIopXwAT+NH5aOU8srZiF3Ali00TPwfo3iXePyNP0a+v1GR1MNDkqxc57338PD25GCnD9EpvnRt9BSH8k3m5NWTGf+uyJAkWnmI1ppXv32VOlPqYE91wF2K58/DqlXw0ktgzWYdLjfTqZMxwVCnKjYNHsk1+wVGbhlpbOzRA2w2mDbN1BhFml6AL3ABmA/01FrvVUo9qpSKvandY0AC8ANQ5vp/r83pYPM0rWHwYKIsxZiQryWU/en6BpXWRC5H5UIlSkDv3sZEngMHGPzYYMC4F1hkX6YSLSn4lzss27+M9cfX07deXzwsDrhLce5cY1qJXDbMlofue4gRjUfQrnI744nQUGjc2DjtJdN2TKe1vqS1bqW19tdal9Faz7v+/GatdcBN7TZqrdUtj4amBZ4XrV8PmzZx4sVBJD8xGjo1A//zaZsbN5aZhrnWgAHg6wsffECZ/GUIjenGlJ3TUUFHsVqlplZ2ZPaMlhT8M1l8Sjz91vajWtFq9AhzQPEZux0mTIBHHoHKlbPfn5t77z/vUaN4jRtP9OxpTE9cvdq8oITISVpzscdgTnuU5j/fPY692nR89nZHxRcjONiYcyNzRHKxIkWMRQ4XLmT483/y18SBxo3x1eZjt8OkSZJs3asMEy0p+Jc7jNoyipNXTzK+2fjsL7cDRo2bY8egb9/s9yUAo1L/S8tfYvXh1cYszhIljNFJCDew8e3vKXx0B0Pt/0dy44/A7oV94/vMnm1cZpf7svKA/v0hMJCqi/4PYkvApD/g50FpmydNkjKB9yIzZ7Sk4J/JtNYcunSIF6q+QIOQBo7p9L//Ne7mbt3aMf0J/Dz92Hl6J33+14dki4auXY0zWsePmx2aEM5ls1Fs3PscoRwzy9wPVRfC1ndIuVyCPn3MDk5kWlAQvPMOrVhBAzZenymqIOAsYCwt1q2bJFtZlZlESwr+mUwpxfw285nZaqZjOvz9d9i0Cd54Q26CdyAvDy/GPTWOw5cOM2bbGOjSxVjMTdaxEK5u0iQq2ffyNmOw+V+GszVh67sAREebHJvImn79iKQM4+iDBzZj7cM+5aDyEsBYBWPQoAz6EOlkJtGSgn8m+vHojxy8eBAwvsgdYuxY8PeH115zTH8iTdPyTWlbuS0fbvqQ/T6xxhnDr76Cq1fNDk0I54iKIv7t/2MtT/ItLWF/G/h6F6T4mR2ZuBd+fqxtMoYa/EFXpsC5ByG6AjR5O21pnpNS9SFLMpNoScE/k1yIu0CHpR3o/n13x3V69iwsWACvvgoFCjiuX5Hmy2Zf4u/lT/+1/WHgQLhyRaZaCZe1pcEgPJNj6eP1IdSaBsrOzeUcZMGJvKfr/9pyqGQDhjOYgvoqrP4CCpxMW3DaYpHLh1mRYaIlBf/M0/uH3sQkxzDxGQd+SU+caNR4evNNx/Up0ikWUIxl7Zcx7dlpUKsWPP00fP45xMWZHZoQDrV6+C4e2T+VL3iTA43nQfPuUGR/ujbjxpkUnLh3ShG6+gsKqit8bB0KkQ1gbzv4z0gocAK7Xe7VyorMlneQgn85bOm+pSzet5ihDYZSuYiDyi9ER8MXX0CrVlC+vGP6FLfVIKQBJfKVIFWncu2dN41ljr7+2uywhHAcu53Cw3pzgaIMu68J1P0SInrChappTQoVktmGeVb16lh6dKe7fSJ1LRGwdgzYPaGc8ZUu92plntJamx0DYWFhOiIiwuwwco1zseeo8VUN7gu8j+2vbcfTw9MxHQ8YAGPGwB9/QNWqGbcX2dZyQUui4qLYMtcHy/79xgxEHx+zw8oVlFK7tNZhZseRXe46fv3WcQy15r9DJ49pzOs1Aix2oxxAslEDVimYPVsSrTztyhWoUoW/zhSkNrtI9ouB+MJpm5WC1FQT4zNRVsYvWYInFyrgU4COVTsyu/VsxyVZp0/D+PHw4ouSZOWgTtU68cvfvzClWVFj7cNvvjE7JCGyb98+qswfzDJaM++JPVDoCHz7TVqSBcZKVJJk5XEFCsDUqVRlL0MZdiPJKr0VCpygTBlzw8srJNHKZVLsKfhYfRj71FjHXTIEGD7cqAY/bJjj+hQZal+lPd1rd6dH3EIu1aoEn3wi92qJvM1mI7p5Z66Rjx58BYdawk8fwYmGaU169pT5Hy6jWTOONHiVdxlFHX4F72vQ6RlUyy7ExGosFggJkfu17kYSrVxkw/ENVJlYhUPRhzJunBVHj8LUqcbdi2XLOrZvkaGxTcdSvXh1Xqp72jizOHKk2SEJcc/2dBhJoeMR9GQCURSF44/Dz4PTthcqJEmWqyn/7eckBpVkrmc4Pkle+G8bhS67nkvlv0BriIyUm+PvRhKtXOL0tdN0XNYRD4sHJfOVdGznQ4aAlxcMHpxxW+Fwvp6+LGq7iFPVg7ncuhmMHm0sfyREXrNtG5WXDGM+z7P0+fnQcGi6zX5+MsvQJeXPj//8aVRI2U9ClzcoFNkNDrYwamvd9wsgN8ffjSRauUBscizN5zcnNjmWxe0WE+AVkPEvZdZPP8H8+fDWW1C8uOP6FVlSsXBFdvfYTcHxU8BqRffvb3ZIQmTN2bPQti2RBNOrXkWotAISgtI1mTxZ7styWU2aGJnU1Kk0iZwGy2fB1TLQvh34XgKkkOmdSKJlMnuqnQ5LO/DH+T9Y1HYRVYs68Eb1+Hhjvb0KFeRPjVzAoizYSxRnZdvqqBUrYK1UPhF5RHIytGsHV6/Spfp7XGkyHP56HnbcqMcXHCxJlssbNgyefJIv6U3txCOwaCls7wsJBQHk5vg7kETLZHEpccQkxfBlsy9pVqGZYzsfOtS4RDVlCvj6OrZvcU8sysLKZ8pxOAiudg+HxESzQxIiY2+/DVu3cn7cJ/zebiDqUkVYOZV/KsD7+cHHH5sbosgBHh4wbx62QsVYptpQ6Nx9sO1tQOFb5CzDh5tfLio3kkTLRMn2ZAK9A1n38jp61unp2M4jIoxq5F27QoMGju1b3DOlFBOfm8bk8GrkP3GW493amx2SEHe1M3wCjB/P5/Sj2qwyKDwYVWs5wSUCUMo4kyWXDN1I4cL4/28ppazn+dGrOQHEUrLaYdQblTlTdrTZ0eVKkmiZ5JPNn9B4VmPikuOwWqyO7TwpCbp0gWLF4NNPHdu3yDYvDy8GDt/EvMZFKTv7OyK+HprxLwlhghlPzKHOzN6soCUDGEXU5tYkjzlCSa+KnDhhFKs8cUKSLLcTFobHogXUtO0kpkkbTu0sTcvKzXh33btM/3262dHlOpJomWDE5hEM+mkQwfmD8bE6uEq41vD667Bnj7HkiywcnSsV9C1IsyV7OFTan+rv/RfOnDE7JCHS2dhvJS+uD2e9asgLHeKwV14BQMJVf7nlUxhLuU2dCmvXYnm5MzNaTKNJuSZ0/a4r3x741uzochVJtHKQ1pohPw1h4E8D6VitIzNbzcTD4uHYF/nqK5g2zbj5vUULx/YtHKpggeJUWBuBV7INXnyRI1EHzQ5JCMOaNTw8tj271IO06phMUuh68EhK2yyzywQAr7xilKtZtAivbj1Z+txCapesTdvFbdlycovZ0eUakmjloHfXvcvwzcN5reZrzkmyNm+GN9+EZ56RCvB5hHrgAWNppA0bWPvMA4zcPILcsP6ocE9z58JbhWeT8lRz9lvK8/TLScTevxOWzIc/b1wflNllIs3bb8OHH8LMmQQ8/xJrn1vBgEcGULdUXbMjyzUk0cpBXWp14bMmnzGlxRTH35d17Bi0bQv33w9z5hizQ0Te8Oqr2Pq/Ra+dkPB/A+mysgvJ9mSzoxJuZu4czd7Ooxgb/TKb1H94rGsCl0odg3nfwd7n09opJTMMxS2GDIFJk2DVKvI3b8PHNfvj5eFFVFwU47aPY/acVEJCcNvleiTRcrKfjv9En9V90FoTWiiUfg/3Qynl2Bc5fBgeewxsNlixQu7LyoOsoz9Dh4czbCN4T/6G+t/U53D0YbPDEu4iPh7dpSuf2N9jHh14Wq8h5mg7mLUejjZNa6aULBYt7qBHD1i8GHbtgocegt9/Z8pvU+i7pi/ha58l8sIlt12uRxItJ0m2J/Peuvd4YtYTrD22lsuJl53zQgcOGOUbkpJgwwaoVMk5ryOcSynUlCnw7LNMWK34z+p9bDixweyohDvYtw/q1uXFpGl8HFKPF4v1JwUvWDcS/q4HkFbGYfZsWcdQ3EWbNsZqJAkJ8PDDvP9nAYK2jSc1ZC10rwUldwJGLe3Ond0n2ZJEywm2ntxK3Sl1GbV1FF1rdSWiawRBvkEZ/2JW/fYbNGxozLHeuBGqV3f8a4icY7XCggWop55i7PJ4us47CHY73x/6nmOXZW1E4WCpqcbkmbAwUs6doenT5Rgcvh0duua2TaWMg8iU+vVh925o1Aj1+ut8vXYjxaesADS8Vh8eMGav2u3uc2ZLEi0HS0hJ4LlFzxGdEM3y55fzdYuv8ffyd+yLaG1cD3/4YfD0NJKsKlUc+xrCHL6+sHIl9O6N+vxzUlu3ot/SblSeUJkPNn5AQkqC2REKV7BrlzF+9OzJwYqFCXnlCj9WjocFy2DzwHRNCxUyKUaRdxUuDKtWwciRtOA7DpzrQO8JPbFEvAaRjxltPOPTzmy5+r1bkmg5wPnY8wz/eTgp9hR8PX1Z1XEVB14/QKsHWjn+xa5dTwdJpAAADKdJREFUgw4doFcvePxx+P13eOABx7+OMI/VasxE/OILLKt+YN9kTwalPMywTcMoP748X+z4QhIucW8iI6F7d6hTByIjWfPBS1RqeYrWjXrxdbX9eB5tna65pyeMG2dSrCJvs1jg3XdZM+YvIiwPMT7lfSJWb+eZhG2gUuCVx6Bjc+xFd7n+vVtaa9MftWvX1nnRgagD+s0f3tS+w321ZZhFbzi+wXkvZrdr/c03WhcvrrWHh9YjRhjPCde2aZPW5ctrDfpM+6f1018+rPkAvePvHVprrVNTU00O8N4BEToXjD/ZfeTG8WvOHK2Dg7VWyvj32zGHtH71VZ1qtWqb1UMfevFpra9c0fHJ8frXv3+94+/NmWPSDgiXMmd2qn5eLdRHKas16Ahq6paVXtTqnYKaD9C80FJTeouGVB0cbHa0mZOV8cv0QUrn0oHqbi7GXdQNpjfQfIC2fmjVnZd31gcvHnTOi6Wmar12rda1ahmHq149rXfscM5ridwpPl7rAQOMBLtAAX22f3eto6O11lp3+baLbreonV5zZI1OtiWbHGjWSKLlHHPmaO3np7UXibo9C/QantR2lE60eugJ9Tz0fW+hOy/vbHaYws3MmaN1oG+y7sx0fZhyWoM+Thk9JLiRLtUrn5FwPbBMK2V2pJmTlfFLLh1mwtmYs0z/fTrjd4wHIMg3CD9PP0Y0HsGpt04xo9UMQguFOvZFY2JgwgSoXBmaNIGoKJg3D7Ztg7pSCM6t+PrCqFHGQuENG1L8s6+NKWD9+lHjnGb9sXU0ndOUYmOKEb4inI0nNpodsTBLbCw/v7WMCfGdOUNJFvICFX238WEDTcjrXuwZ+BrfvrOLGa1mmB2pcDOdOsHEKZ5sDA6nEgd4QS3kMKF8GLmByIlxbBwTSt9Dh6lf4hijt47mqTlPMXnXZM7GnP1XX3PnkqfqcikjMTNXWFiYjoiIMDuMdNYcWcPyA8vZeGIjB6ONpVFqFq/Jrm67HF8H6x9nzxo3EH77LaxbB4mJRlLVuze0awc+Dl4XUeRNf/4JI0YYNWtsNlIrV+JA4xosLnmFL1N/ITysK6ObjCbJlsTQjUOpU7IOtUrUIqRAiPPeu/dAKbVLax1mdhzZZer4dekS/PorSRvWk7jxR/x//wtrip1LPrDK1obZtm6sv99GauB52N8GnRhoTpxC3GLuXOOerKLxxwlnBq1ZTnX+BOBK6SL8WDKR70vE8Mt9YA2tyDMVWzC6yei034uPv9GXnx9Mnpyzs2KzMn5lKtFSSgUB04AmwEXgfa31vNu0U8BIoMv1p6YC7+kMXsSMgepSwiUORR8i8kokhy8d5mD0QY5eOsqm8E14enjSZ3Ufpu+ezmPBj9EwpCGPl32cmsVrOuaLSms4fdqogbVvH+zYAdu3G9XdwUjRW7aEjh3l7JW4s+hoI9maOxe2GOuK6YAAUh5+CK86D3EiOD8t/hrEwfw2UqzGmdgqRaowrOEwGpVtlPYZKJWvFMUDiuPp4Zmj4edUopXnx6+4ODh/HtuRw1zZt4uEA3/Bvn2UOHoB6xnjr32bgt9KwM/B8EOpMvwc9xT2bYPg6o21coKDjRINQuQWc+cay/KePGks6zSuzzFaqpWwYQN682bUZaP+ZIK3B6fK5Ce0wXN8uqQsu2vM5IS/L5HJVTgbVwN96QFKelXi9B8Vcix2ZyRa8zFmKL4GPAisAh7RWu+9pV13oB/QGNDAj8AXWuuv7tZ/7dq19ZbtxheFp4cnVosVe6qdhJR4UuwppKSmkGJLJiU1haL+RfGz+nIl8QpHLh0hxZZMki2JuJQ44pLjaBTSkCL+Rdhzbg9L9y7hYvxFohOjiY67yMX4iyxtv5RyBe9n7C9jeX/9QP5Jm+7LV4qKhUKZ+uxUigcUJyYpBj+r7431CG/+/5SaCsnJxiMpKf2/MTFw9eq/HxcvGsnV6dPGuyou7kZ/JUsaU63r1YOmTaFqVaNCoBCZFRVllPnYsAF+/tlI4u12ALRSxBXJz7lC3vztZ6Ni6COUKFOZvbazjD00i2g/iPEGn3wFCcxflCFPDqdS6ZrsvnyAlZFrCPDNT4BPfgL9CuDj6cfj5Z8g0LcAZ+LOcSrmNN5evnh7eONt9cbbw5viAcXxsHiQkJJAoi0Ri7Kke/hYfVBK5WSi5dTxK6xWLb1lvVF7SqemYktKwJ6UiJcd/LCSmpTI6egT2JMSSE1KxJ6UiD0+lkI2L4poX5IuX2Tvse3o2FgsV69hjb6M78UrlIz3wO9SDMTGpnu9JA84VAh8az9E+UZtOB9aiule+6hW7mFql6zN+m+L54q/+IXIltRU2LsXdu6EPXuM2lz79hnfpTdJ8oBTgXCRwtSrVwcdFMSsk9+RFOgHQUFYAwtg9QugculahJV7FLuXJz+d3YaXfyAevv5Y/QOw+vpTqkAZSuQvhY1UTseexdPqjbeXLxarJxYPK77e/nh5+pCqIFnb8PXyc1yipZTyBy4DVbXWh64/Nxs4rbV+75a224AZWuvJ139+Deiqta53t9cIU0rnrguHDubnZxSjKVXKeJQuDaGhULGiUZqhZEmzIxSuJikJ9u83LjMeO2acyjhxAi5cMC43RUdDSorDXs6uIPX6w8vqjVKKlFQbtlTbv9r6WH1QgEpMdHqilZfGryQPuOYNUf6KS4GeFC9Xg/KV6xNb0J8l0ZuhTDDeD1QhqHw17i9cgbIFy95xzdRbzxR8/LEkWcI1VCoTB6dOEsIJ42HdTxnPA5T0iKXBAynoS9HEnz+Nb3wyFifeGaXAoYlWTWCr1trvpufeBhporVvc0vYq0ERrveP6z2HABq11vtv02w3odv3HqsBfmQnYBRXGuJzhrtx5/9153wEq3m5scCQZv3KEO7+P3XnfwZT9LxwEZYJB3TSZT6fCyUi4eCkHA8n0+HX7P4fSCwCu3fLcVeB2LxBwfdvN7QKUMiZs3tzw+l+N//zlGOEKN8XeC3fed3Dv/XfnfQdj/3PgZWT8cjJ33n933ndw7/3PyviVmfIOscCtU1UCgZhMtA0EYjO6mVQIIZxExi8hhKkyk2gdAqxKqZtv568B7L1N273Xt2XUTgghcoKMX0IIU2WYaGmt44BlwIdKKX+lVH2gJTD7Ns1nAf2UUqWUUiWB/sCMTMQxOfMhuxx33ndw7/13532HHNh/Gb9yhDvvvzvvO7j3/md637NSR+sb4EkgGqO2zDyl1KPAaq11wPV2ChhF+jo078qpdyGEWWT8EkKYKVdUhhdCCCGEcEWy1qEQQgghhJNIoiWEEEII4SS5MtFSSlVQSiUqpeaYHUtOUEp5K6WmKaUilVIxSqndSqlmZsflTEqpIKXUcqVU3PX97mh2TDnBHY/1nbjq59xV9+tO3PE97a7jF7jn8b6drHzOc2WiBUwAdpodRA6yAqeABkB+YDCwSCkVYmJMzjYBSAaKAZ2ASUqpKuaGlCPc8Vjfiat+zl11v+7EHd/T7jp+gXse79vJ9Oc81yVaSqkXgCvAerNjySla6zit9Qda6xNa61St9ffAcaC22bE5w/X159oAQ7TWsVrrLcBK4CVzI3M+dzvWd+Kqn3NX3a+7cbf3tDuPX+B+x/t2svo5z1WJllIqEPgQ6Gd2LGZSShUDQnHdYomhgO2fRX6v2wO4y1+EadzgWP+Lq37OXXW/ssoN3tMyft3EDY53OvfyOc9ViRbwETBNa/232YGYRSnlCcwFZmqtD5gdj5NkZf05l+Umx/p2XPVz7qr7lWlu8p6W8es6Nznet8ry5zzHEi2l1EallL7DY4tS6kHgCWBsTsWUUzLa95vaWTAqVicDvU0L2Pmysv6cS3KjY51OXv2cy/gl49dN3H78Arc63mnu9XNudU44/6a1bni37UqpvkAIcNIo0EwA4KGUqqy1ruX0AJ0oo32HtKrU0zBurnxaa53i7LhMlLb+nNb68PXn3GZdOTc71rdqSB78nMv4dXdu9p526/EL3O5436wh9/A5zzWV4ZVSfqT/K+FtjB3qqbWOMiWoHKSU+gp4EHhCax1rdjzOppRaAGiM5U4eBH4AHtFau/xg5W7H+mau+jl31f3KLHd7T7vz+AXud7z/ca+f8xw7o5URrXU8EP/Pz0qpWCDRTQapYKA7kAScu54pA3TXWs81LTDn6oWx/twFjPXnerrDIOWmxzqNq37OXXW/MsNN39NuOX6B2x5v4N4/57nmjJYQQgghhKvJbbMOhRBCCCFchiRaQgghhBBOIomWEEIIIYSTSKIlhBBCCOEkkmgJIYQQQjiJJFpCCCGEEE4iiZYQQgghhJNIoiWEEEII4ST/D2BETze1E2/3AAAAAElFTkSuQmCC\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"sqsMkBm81eQ9","colab_type":"text"},"source":["データ数が増えるにしたがって、推定値が真の母数に近づくことがわかります。\n","\n","また、データ数が少ない場合は、分散が真の母数よりも小さく推定されていることがわかります。"]}]} -------------------------------------------------------------------------------- /05-logistic_vs_perceptron.ipynb: -------------------------------------------------------------------------------- 1 | {"nbformat":4,"nbformat_minor":0,"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3"},"colab":{"name":"05-logistic_vs_perceptron.ipynb","provenance":[],"collapsed_sections":[]}},"cells":[{"cell_type":"markdown","metadata":{"id":"zodnS_2626be","colab_type":"text"},"source":["# 第5章 ロジスティック回帰とROC曲線:学習モデルの評価方法"]},{"cell_type":"markdown","metadata":{"id":"LY-1TFdt26bf","colab_type":"text"},"source":["## 「05-logistic_vs_perceptron」の解説"]},{"cell_type":"markdown","metadata":{"id":"F7ldKJs826bg","colab_type":"text"},"source":["ITエンジニアための機械学習理論入門「第5章 ロジスティック回帰とROC曲線:学習モデルの評価方法」で使用しているサンプルコード「05-logistic_vs_perceptron.py」の解説です。\n","\n","※ 解説用にコードの内容は少し変更しています。"]},{"cell_type":"markdown","metadata":{"id":"UqIH3oBA26bh","colab_type":"text"},"source":["はじめに必要なモジュールをインポートしておきます。\n","\n","関数 multivariate_normal は、多次元の正規分布に従う乱数を生成するために利用します。"]},{"cell_type":"code","metadata":{"id":"ridpDSE_26bi","colab_type":"code","colab":{}},"source":["import numpy as np\n","import matplotlib.pyplot as plt\n","import pandas as pd\n","from pandas import Series, DataFrame\n","\n","from numpy.random import multivariate_normal\n","\n","import matplotlib\n","matplotlib.rcParams['font.size'] = 12"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"bW8J7SjC26bo","colab_type":"text"},"source":["トレーニング用データを生成する関数を用意します。\n","\n","平面上の○☓の2種類のデータについて、それぞれの「個数、中心座標、分散」を引数で指定します。"]},{"cell_type":"code","metadata":{"id":"lfRhX0nj26bo","colab_type":"code","colab":{}},"source":["def prepare_dataset(n1, mu1, variance1, n2, mu2, variance2):\n"," df1 = DataFrame(multivariate_normal(mu1, np.eye(2)*variance1 ,n1),\n"," columns=['x', 'y'])\n"," df1['type'] = 1\n"," df2 = DataFrame(multivariate_normal(mu2, np.eye(2)*variance2, n2),\n"," columns=['x', 'y'])\n"," df2['type'] = -1\n"," df = pd.concat([df1, df2], ignore_index=True)\n"," df = df.reindex(np.random.permutation(df.index)).reset_index(drop=True)\n"," return df"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"lwGIanBR26bt","colab_type":"text"},"source":["パーセプトロンで分割線を決定する関数を用意します。"]},{"cell_type":"code","metadata":{"id":"ubXlVnw326bt","colab_type":"code","colab":{}},"source":["# パーセプトロン\n","def run_perceptron(train_set):\n"," # パラメータの初期値とbias項の設定\n"," w0 = w1 = w2 = 0.0\n"," bias = 0.5 * (train_set.x.abs().mean() + train_set.y.abs().mean())\n","\n"," # Iterationを実施\n"," paramhist = DataFrame([[w0, w1, w2]], columns=['w0', 'w1', 'w2'])\n"," for i in range(30):\n"," for index, point in train_set.iterrows():\n"," x, y, type = point.x, point.y, point.type\n"," if type * (w0*bias + w1*x + w2*y) <= 0:\n"," w0 += type * bias\n"," w1 += type * x\n"," w2 += type * y\n"," \n"," # 判定誤差の計算\n"," err = 0.0\n"," for index, point in train_set.iterrows():\n"," x, y, type = point.x, point.y, point.type\n"," if type * (w0*bias + w1*x + w2*y) <= 0:\n"," err += 1\n"," err_rate = err * 100 / len(train_set)\n"," \n"," return w0, w1, w2, err_rate"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"sia2VjZH26bx","colab_type":"text"},"source":["同じく、ロジスティック回帰で分割線を決定する関数を用意します。"]},{"cell_type":"code","metadata":{"id":"vptSQ1Xe26by","colab_type":"code","colab":{}},"source":["# ロジスティック回帰\n","def run_logistic(train_set):\n"," w = np.array([[0], [0.1], [0.1]])\n"," phi = train_set[['x', 'y']]\n"," phi['bias'] = 1\n"," phi = phi[['bias', 'x', 'y']].values\n"," t = (train_set[['type']] + 1)*0.5 # type = 1, -1 を type = 1, 0 に変換\n"," t = t.values\n","\n"," # 最大30回のIterationを実施\n"," for i in range(30):\n"," # IRLS法によるパラメータの修正\n"," y = np.array([])\n"," for line in phi:\n"," a = np.dot(line, w)\n"," y = np.append(y, [1.0/(1.0+np.exp(-a))])\n"," r = np.diag(y*(1-y)) \n"," y = y[np.newaxis,:].T\n"," tmp1 = np.linalg.inv(np.dot(np.dot(phi.T, r),phi))\n"," tmp2 = np.dot(phi.T, (y-t))\n"," w_new = w - np.dot(tmp1, tmp2)\n"," # パラメータの変化が 0.1% 未満になったら終了\n"," if np.dot((w_new-w).T, (w_new-w)) < 0.001 * np.dot(w.T, w):\n"," w = w_new\n"," break\n"," w = w_new\n"," \n"," # 分類誤差の計算\n"," w0, w1, w2 = w[0], w[1], w[2]\n"," err = 0.0\n"," for index, point in train_set.iterrows():\n"," x, y, type = point.x, point.y, point.type\n"," type = type * 2 - 1\n"," if type * (w0 + w1*x + w2*y) < 0:\n"," err += 1\n"," err_rate = err * 100 / len(train_set)\n"," \n"," return w0, w1, w2, err_rate"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"nhGFamUu26b1","colab_type":"text"},"source":["結果をグラフに表示する関数を用意します。"]},{"cell_type":"code","metadata":{"id":"wqtgJZbr26b1","colab_type":"code","colab":{}},"source":["# 結果の表示\n","def show_result(subplot, train_set, w0, w1, w2, err_rate):\n"," train_set1 = train_set[train_set['type']==1]\n"," train_set2 = train_set[train_set['type']==-1]\n"," ymin, ymax = train_set.y.min()-5, train_set.y.max()+10\n"," xmin, xmax = train_set.x.min()-5, train_set.x.max()+10\n","\n"," subplot.set_ylim([ymin-1, ymax+1])\n"," subplot.set_xlim([xmin-1, xmax+1])\n"," subplot.scatter(train_set1.x, train_set1.y, marker='o', label=None)\n"," subplot.scatter(train_set2.x, train_set2.y, marker='x', label=None)\n","\n"," linex = np.arange(xmin-5, xmax+5)\n"," liney = - linex * w1 / w2 - w0 / w2\n"," label = \"ERR %.2f%%\" % err_rate\n"," subplot.plot(linex, liney, label=label, color='red')\n"," subplot.legend(loc=1)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"DakTrqkj26b6","colab_type":"text"},"source":["トレーニングセットを用意します。"]},{"cell_type":"code","metadata":{"id":"270izijZ26b7","colab_type":"code","colab":{}},"source":["train_set = prepare_dataset(20, [15, 10], 10, 30, [0, 0], 10)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"xLPEcTXZ26b-","colab_type":"text"},"source":["パーセプトロンでトレーニングした結果を表示します。"]},{"cell_type":"code","metadata":{"scrolled":true,"id":"5kV_HExr26b_","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":431},"outputId":"390146d4-9c1b-45c3-f544-b12be35826f9","executionInfo":{"status":"ok","timestamp":1587542102671,"user_tz":-540,"elapsed":1183,"user":{"displayName":"Etsuji Nakai","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhetRRD1sS-9biTr-QKIKpeab3l7NjR8gRdtuQWcg=s64","userId":"13606123633698401153"}}},"source":["w0, w1, w2, err_rate = run_perceptron(train_set)\n","fig = plt.figure(figsize=(7, 7))\n","subplot = fig.add_subplot(1, 1, 1)\n","bias = 0.5 * (train_set.x.abs().mean() + train_set.y.abs().mean())\n","show_result(subplot, train_set, w0*bias, w1, w2, err_rate)"],"execution_count":39,"outputs":[{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAbUAAAGeCAYAAAATwZ8oAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3deXxV1bn/8c8TiCYMISLggBdQrwUaEdFY9NqqWC1Wq0Vobelg668WEFFEpQICoowyqDgwOFSttrZeK7R1FofWoVpiERAFqUVUqApXQIaAgazfHyuRJGTOPmftc873/Xqdl2afk7OfHCNf1t5rPcucc4iIiKSDrNAFiIiIREWhJiIiaUOhJiIiaUOhJiIiaUOhJiIiaaN56AJq065dO9elS5fGffPGjbB2LXTuDO3aRVqXiIiE88Ybb2x0zrWv7rlYh1qXLl0oKipq3DeXlsKpp8Lbb8PixdC+2p9fRERSjJmtrem59L38mJUF8+bB55/DyJGhqxERkSRI31ADKCjwgXb//fDii6GrERGRBEvvUAMYNw4OPxyGDIFdu0JXIyIiCZT+oZabC3PmwKpVMH166GpERCSBYj1RJDJnnQUXXACTJ8MPfwhHHRW6IhEJ4PPPP+fTTz+lpKQkdClSh5YtW3LYYYeRldWwsVdmhBrALbfAU0/B0KHwzDNgFroiEUmizz//nE8++YSOHTuSm5uL6c+A2CotLWXdunVs3LiRDh06NOh70//yY7lDDoEpU2DRInjoodDViEiSffrpp3Ts2JEWLVoo0GIuKyuLgw46iC1btjT8exNQT3wNGQInnAAjRsCmTaGrEZEkKikpITc3N3QZUk/Z2dns3r27wd+XWaHWrBnMn++7jYweHboaEUkyjdBSR2P/W2VWqAH06gXDh/tw+/vfQ1cjIiIRiizUzGx/M7vHzNaa2VYze9PMvl32XBczc2a2rcJjXFTnbrAbboDDDoPBg0GzoERE0kaUI7XmwIfAqUAbYCzwsJl1qfCafOdcq7LHxAjP3TCtWsFtt8Hy5X5WpIhIYF26dCE3N5dWrVp9+Rg2bBgA9913H82aNaNVq1bk5eXRs2dPHnvssS+/9/3338fMvvy+Ll26MG3atFrP9/7779OnTx9atGhBt27dWLRoUY2v3bVrF//v//0/8vLyOPjgg7npppsqPf/cc8/RrVs3WrRoQZ8+fVi7dm9rxhkzZtCuXTsKCgpYvnz5l8dfeeUV+vXr16DPqF6ccwl7AMuAAUAXwAHNG/L9xx9/vEuo885zrkUL595/P7HnEZHg3n777dAl1Kpz587u2Wefrfa5e++915188snOOef27Nnj5s2b51q2bOk2bdrknHNuzZo1DnAlJSXOOecWL17sWrRo4Z555pkaz3fiiSe6ESNGuB07drhHHnnEtWnTxn366afVvnbUqFHu61//uvvss8/c22+/7Q466CD35JNPOuec27Bhg8vLy3MPP/ywKy4udldffbXr3bu3c8659evXu65du7otW7a42267zZ1zzjnOOedKSkpc79693Zo1a2r9TGr6bwYUuRpyI2H31MzsIOArwIoKh9ea2Udmdq+ZVbsfjJkNMrMiMyvasGFDosrzbrvNr1cbNgx8CIuIxFpWVhY//elP2b59O6tXr672NYWFhRQUFPDmm29W+/y7777LP//5T66//npyc3MZMGAAPXr04I9//GO1r7///vsZN24cBxxwAN27d+eXv/wl9913HwCPPvooBQUFfP/73ycnJ4cJEyawdOlSVq5cyQcffECvXr3Iy8vjjDPO4N///jcAt9xyC+eddx6N3lqsFglZfG1m2cBvgfudcyvNrBVwAvAmcCBwR9nzfat+r3PuTuBOgMLCwsQmTadOcP31cPXVsGAB9O+f0NOJSIxccQXU8Id+ZI49NvJbHHv27OHee+8lOzubzp07V/ua1157jbfeeovRNczyXrFiBUcccQStW7f+8ljPnj1ZsWLFPq/dtGkT//nPf+jZs2el1y5cuPDL96r4XMuWLTnyyCNZsWIFp512GsuXL2fz5s0sWrSIgoICPvzwQ37/+9/z6quvNurnr0vkIzUzywIeAL4AhgE457Y554qcc7udc5+UHf+WmbWu5a2SY/hw6NkTLr8ctm4NXY2IZLB+/fqRn5//5eOuu+768rnXXnuN/Px8cnJyuPrqq3nwwQf36bbRrl07cnNzOemkkxg6dGiN96y2bdtGmzZtKh1r06YNW6v5M3Dbtm1fPl/da2t7rwMPPJBrr72W008/nccff5yZM2cyfPhwbrzxRhYsWMCpp57Kd7/7XT766KMGfEq1i3SkZn5hwT3AQcDZzrmaphaWj8DCLylo3txP7z/pJN/RXxNHRDJDDP9fX7hwIWeccUa1z5144om8/PLLbNu2jV/84he89NJLXHDBBZVes3HjRsyM2bNn87vf/Y6SkhL222+/fd6rVatWfP7555WOff7555VGbhVfW/58Tk7OPq+t670GDhzIwIEDAXj88cfZf//96dWr15cjwz//+c9cffXV/P73v6/z86mPqENlLtAdONc5V1x+0Mx6m1lXM8syswOBW4EXnXMN74GSCL17+24jt90G//xn6GpERGrUqlUr5s6dywMPPMCSJUv2eb5Zs2ZceeWV5OTkMGfOnGrfo6CggH//+9+VRmZLly6loKBgn9cecMABHHLIISxdurTa1xYUFFR6bvv27bz33nv7vFdxcTFjxoxh1qxZrF69mv/6r/8iLy+PE044gWXLljXsQ6hFlOvUOgODgWOBjyusR/sxcATwFLAVeAvYBQyM6tyRmDIFOnTwa9f27AldjYhIjdq2bcvFF1/MDTfcUONrRo0axfTp09m5c+c+z33lK1/h2GOP5frrr2fnzp0sWLCAZcuWMWDAgGrf68ILL2TSpEls2rSJlStXctddd/Hzn/8cgPPPP5+33nqLP/7xj+zcuZMbbriBY445hm7dulV6j0mTJvHzn/+cQw89lE6dOrFq1So++eQTXnjhBY444ojGfxhV1TQtMg6PhE/pr+qhh5wD5269NbnnFZGES4Up/Tk5Oa5ly5ZfPvr16+ecqzylv9yHH37o9ttvP7d06dJ9pvQ751xpaan76le/6m6t4c+zNWvWuFNPPdXl5OS4r3zlK5WWEzz44IPuq1/96pdf79y501100UWudevWrkOHDm7WrFmV3uvZZ591Xbt2dTk5Oe7UU0/dZ6r+O++84woLC93u3bu/PDZ9+nR34IEHuu7du7tly5ZVW2NjpvSbi/FU9sLCQldUVJS8Ezrn9177+9/hnXegY8fknVtEEuqdd96he/fuocuQBqjpv5mZveGcK6zue8JP1IgTM79LdkmJn+4rIiIpRaFW1ZFHwtix8Mgj8MQToasREZEGUKhVZ+RI6N4dLr0UduwIXY2IiNSTQq06++0H8+bB++/7jv4ikhbiPIdAKmvsfyuFWk1OOQUuughmzYK33gpdjYg0UXZ2NsXFxXW/UGKhpKSE5s0b3h9EoVab6dOhTRu/dq20NHQ1ItIEHTp0YN26dezYsUMjtpgrLS3lk08+2af9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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"C53-uWa626cD","colab_type":"text"},"source":["同じトレーニングセットについて、ロジスティック回帰でトレーニングした結果を表示します。"]},{"cell_type":"code","metadata":{"id":"dr-VhnSg26cD","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":431},"outputId":"f49a52fb-67d2-48cc-ee82-5f4435fa74b5","executionInfo":{"status":"ok","timestamp":1587542103155,"user_tz":-540,"elapsed":1607,"user":{"displayName":"Etsuji Nakai","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhetRRD1sS-9biTr-QKIKpeab3l7NjR8gRdtuQWcg=s64","userId":"13606123633698401153"}}},"source":["w0, w1, w2, err_rate = run_logistic(train_set)\n","fig = plt.figure(figsize=(7, 7))\n","subplot = fig.add_subplot(1, 1, 1)\n","show_result(subplot, train_set, w0, w1, w2, err_rate)"],"execution_count":40,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]}]} -------------------------------------------------------------------------------- /05-roc_curve.ipynb: -------------------------------------------------------------------------------- 1 | {"nbformat":4,"nbformat_minor":0,"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3"},"colab":{"name":"05-roc_curve.ipynb","provenance":[],"collapsed_sections":[]}},"cells":[{"cell_type":"markdown","metadata":{"id":"LmTNQjqi4mJ3","colab_type":"text"},"source":["# 第5章 ロジスティック回帰とROC曲線:学習モデルの評価方法"]},{"cell_type":"markdown","metadata":{"id":"4epk53Iv4mJ5","colab_type":"text"},"source":["## 「05-roc_curve」の解説"]},{"cell_type":"markdown","metadata":{"id":"e9x6HQlm4mJ5","colab_type":"text"},"source":["ITエンジニアための機械学習理論入門「第5章 ロジスティック回帰とROC曲線:学習モデルの評価方法」で使用しているサンプルコード「05-roc_curve.py」の解説です。\n","\n","※ 解説用にコードの内容は少し変更しています。"]},{"cell_type":"markdown","metadata":{"id":"1EYTbX3r4mJ6","colab_type":"text"},"source":["はじめに必要なモジュールをインポートしておきます。\n","\n","関数 multivariate_normal は、多次元の正規分布に従う乱数を生成するために利用します。"]},{"cell_type":"code","metadata":{"id":"wjJ5cQp34mJ7","colab_type":"code","colab":{}},"source":["import numpy as np\n","import matplotlib.pyplot as plt\n","import pandas as pd\n","from pandas import Series, DataFrame\n","\n","from numpy.random import multivariate_normal\n","\n","import matplotlib\n","matplotlib.rcParams['font.size'] = 12"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"WTyhlOs84mKA","colab_type":"text"},"source":["トレーニング用データを生成する関数を用意します。\n","\n","平面上の○☓の2種類のデータについて、それぞれの「個数、中心座標、分散」を引数で指定します。"]},{"cell_type":"code","metadata":{"id":"ns7Ec__S4mKB","colab_type":"code","colab":{}},"source":["def prepare_dataset(n1, mu1, variance1, n2, mu2, variance2):\n"," df1 = DataFrame(multivariate_normal(mu1, np.eye(2)*variance1 ,n1),\n"," columns=['x','y'])\n"," df1['type'] = 1\n"," df2 = DataFrame(multivariate_normal(mu2, np.eye(2)*variance2, n2),\n"," columns=['x','y'])\n"," df2['type'] = -1\n"," df = pd.concat([df1,df2], ignore_index=True)\n"," df = df.reindex(np.random.permutation(df.index)).reset_index(drop=True)\n"," return df"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"UTAK1g_b4mKE","colab_type":"text"},"source":["ロジスティック回帰で分割線を決定する関数を用意します。\n","\n","ここでは、得られた結果を用いて、トレーニングセットの各データに対して確率の値を付与したデータフレームも返却するようにしています。"]},{"cell_type":"code","metadata":{"id":"0K6JJbzD4mKF","colab_type":"code","colab":{}},"source":["# ロジスティック回帰\n","def run_logistic(train_set):\n"," pd.options.mode.chained_assignment = None\n"," w = np.array([[0], [0.1], [0.1]])\n"," phi = train_set[['x', 'y']]\n"," phi['bias'] = 1\n"," phi = phi[['bias', 'x', 'y']].values\n"," t = (train_set[['type']] + 1)*0.5 # type = 1, -1 を type = 1, 0 に変換\n"," t = t.values\n","\n"," # 最大100回のIterationを実施\n"," for i in range(100):\n"," # IRLS法によるパラメータの修正\n"," y = np.array([])\n"," for line in phi:\n"," a = np.dot(line, w)\n"," y = np.append(y, [1.0/(1.0+np.exp(-a))])\n"," r = np.diag(y*(1-y)) \n"," y = y[np.newaxis,:].T\n"," tmp1 = np.linalg.inv(np.dot(np.dot(phi.T, r),phi))\n"," tmp2 = np.dot(phi.T, (y-t))\n"," w_new = w - np.dot(tmp1, tmp2)\n"," # パラメータの変化が 0.1% 未満になったら終了\n"," if np.dot((w_new-w).T, (w_new-w)) < 0.001 * np.dot(w.T, w):\n"," w = w_new\n"," break\n"," w = w_new\n"," \n"," # 分類誤差の計算\n"," w0, w1, w2 = w[0], w[1], w[2]\n"," err = 0\n"," for index, line in train_set.iterrows():\n"," a = np.dot(np.array([1, line.x, line.y]), w)\n"," p = 1.0/(1.0+np.exp(-a))\n"," train_set.loc[index, 'probability'] = p\n"," if (p-0.5)*line.type < 0:\n"," err += 1\n"," err_rate = err * 100 / len(train_set)\n"," result = train_set.sort_values(by=['probability'], ascending=[False]).reset_index()\n"," \n"," return w0, w1, w2, err_rate, result"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"kjB72H8E4mKI","colab_type":"text"},"source":["結果をグラフ、および、ROC曲線として表示する関数を用意します。"]},{"cell_type":"code","metadata":{"id":"975xN3Ng4mKJ","colab_type":"code","colab":{}},"source":["# 結果の表示\n","def show_result(subplot, train_set, w0, w1, w2, err_rate):\n"," train_set1 = train_set[train_set['type']==1]\n"," train_set2 = train_set[train_set['type']==-1]\n"," ymin, ymax = train_set.y.min()-5, train_set.y.max()+10\n"," xmin, xmax = train_set.x.min()-5, train_set.x.max()+10\n","\n"," subplot.set_ylim([ymin-1, ymax+1])\n"," subplot.set_xlim([xmin-1, xmax+1])\n"," subplot.scatter(train_set1.x, train_set1.y, marker='o', label=None)\n"," subplot.scatter(train_set2.x, train_set2.y, marker='x', label=None)\n","\n"," linex = np.arange(xmin-5, xmax+5)\n"," liney = - linex * w1 / w2 - w0 / w2\n"," label = \"ERR %.2f%%\" % err_rate\n"," subplot.plot(linex, liney, label=label, color='red')\n"," subplot.legend(loc=1)"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"es7zn3ZK4mKM","colab_type":"code","colab":{}},"source":["# ROC曲線の表示\n","def draw_roc(subplot, result):\n"," positives = len(result[result['type']==1])\n"," negatives = len(result[result['type']==-1])\n"," tp = [0.0] * len(result)\n"," fp = [0.0] * len(result)\n"," for index, line in result.iterrows():\n"," for c in np.arange(0, len(result)):\n"," if index < c:\n"," if line.type == 1:\n"," tp[c] += 1\n"," else:\n"," fp[c] += 1\n"," tp_rate = np.array(tp) / positives\n"," fp_rate = np.array(fp) / negatives\n","\n"," subplot.set_ylim([0, 1])\n"," subplot.set_xlim([0, 1])\n"," subplot.set_xlabel(\"False positive rate\")\n"," subplot.set_ylabel(\"True positive rate\")\n"," subplot.plot(fp_rate, tp_rate)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"hpjiZe904mKP","colab_type":"text"},"source":["比較的分散が小さくて、分類が容易なトレーニングセットを用意します。"]},{"cell_type":"code","metadata":{"id":"9WlpWi0a4mKQ","colab_type":"code","colab":{}},"source":["train_set = prepare_dataset(80, [9, 9], 50, 200, [-3, -3], 50)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"_QSCi3054mKT","colab_type":"text"},"source":["ロジスティック回帰を適用した結果を表示します。"]},{"cell_type":"code","metadata":{"id":"xuatDrRe4mKU","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":714},"outputId":"3089ec2f-88b4-46f2-d41f-d451bc32c11d","executionInfo":{"status":"ok","timestamp":1587542466395,"user_tz":-540,"elapsed":3046,"user":{"displayName":"Etsuji Nakai","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhetRRD1sS-9biTr-QKIKpeab3l7NjR8gRdtuQWcg=s64","userId":"13606123633698401153"}}},"source":["w0, w1, w2, err_rate, result = run_logistic(train_set)\n","fig = plt.figure(figsize=(6, 12))\n","subplot = fig.add_subplot(2, 1, 1)\n","show_result(subplot, train_set, w0, w1, w2, err_rate)\n","subplot = fig.add_subplot(2, 1, 2)\n","draw_roc(subplot, result)"],"execution_count":7,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"rbqphpBR4mKY","colab_type":"text"},"source":["分散が大きくて、分類が困難なトレーニングセットを用意します。"]},{"cell_type":"code","metadata":{"id":"NXl2wPqW4mKZ","colab_type":"code","colab":{}},"source":["train_set = prepare_dataset(80, [9, 9], 150, 200, [-3, -3], 150)"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Rxghxt9b4mKb","colab_type":"text"},"source":["ロジスティック回帰を適用した結果を表示します。"]},{"cell_type":"code","metadata":{"id":"3T-vpuw_4mKb","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":717},"outputId":"1722e5ee-9238-4aad-e062-6bccf6b48255","executionInfo":{"status":"ok","timestamp":1587542467513,"user_tz":-540,"elapsed":4135,"user":{"displayName":"Etsuji Nakai","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhetRRD1sS-9biTr-QKIKpeab3l7NjR8gRdtuQWcg=s64","userId":"13606123633698401153"}}},"source":["w0, w1, w2, err_rate, result = run_logistic(train_set)\n","fig = plt.figure(figsize=(6, 12))\n","subplot = fig.add_subplot(2, 1, 1)\n","show_result(subplot, train_set, w0, w1, w2, err_rate)\n","subplot = fig.add_subplot(2, 1, 2)\n","draw_roc(subplot, result)"],"execution_count":9,"outputs":[{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAYoAAAK8CAYAAADxtfg9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOydeXgUVfaw3+oESEAg4gISFCEgOoqiIoyiCC4QFjWiIi5BBQV0XGdEgwsqKAmD24w6Igoq4KCOQlSU4ALoyCiogyPuCgxjErcfGvhkD7nfH7eru7pS3V3dXb0kOe/z8CTdXXXrVnU4596zGkopBEEQBCEcvnRPQBAEQchsRFEIgiAIERFFIQiCIEREFIUgCIIQEVEUgiAIQkREUQiCIAgRSamiMAwjyzCMNYZhLPa/7mIYxirDML41DOM5wzCap3I+giAIQnRSvaO4DvjC8no68IBSqhvwKzA2xfMRBEEQomCkKuHOMIxOwNPAPcAfgTOAn4EOSqlawzCOB+5USg2ONM6+++6rDj744GRPN/P4/nuoroY2baCgAHxiNRQEwT0fffTR/yml9ovn3GyvJxOBB4GbgNb+1/sANUqpWv/rSiA/2iAHH3wwH374YXJmmOnMng3jx2sl8eqr0L59umckCEIDwTCMjfGem5JlqWEYw4GflFIfxXn+OMMwPjQM48Off/7Z49k1IMaOhfJy+PxzOOEE+PbbdM9IEIQmQKrsF/2AMw3D+C/wLHAK8BcgzzAMc1fTCahyOlkpNUsp1Vsp1Xu//eLaOTUehg+H5cthyxY4/nhYvTrdMxIEoZGTEkWhlJqklOqklDoYGAUsU0pdBCwHzvUfdgnwUirm0+Dp2xf+9S9o3RoGDoQlS9I9I0EQGjGp9FE4cTPwrGEYdwNrgNlpnk/DoXt3eO89GDoUzjgDHn8cLrss3bMSBHbv3k1lZSU7duxI91SaJDk5OXTq1IlmzZp5NmbKFYVSagWwwv/7eqBPqufQaGjfHlasgHPOgTFjoKoKbr0VDCPdMxOaMJWVlbRu3ZqDDz4YQ/4WU4pSik2bNlFZWUmXLl08G1diLBs6rVvD4sVQXAy33w5XXQV79qR7VkITZseOHeyzzz6iJNKAYRjss88+nu/m0m16ErygeXN4+mno2BGmT4cffoC//x1yc9M9M6GJIkoifSTj2cuOorFgGFBWBn/9K7z0Epx2GmzalO5ZCYLQCBBF0di45hp4/nn46CM48UTYGHeOjSA0WLKysujVq1fgX1lZGQADBgygR48eHHXUURx33HF8/PHHgXMOPvhgevbsyZFHHsnJJ5/MRof/O9u2bWPYsGEceuihHH744ZSUlAQ+27lzJ+effz7dunWjb9++/Pe//3WcW0VFBT169KBbt26BeQFs2LCBvn370q1bN84//3x27doFwEMPPcQRRxzB0KFDA++9++673HDDDQk/J9copRrUv2OPPVYJLnj7baXatlXqgAOU+vjjdM9GaEJ8/vnn6Z6CatWqleP7J598svrggw+UUkrNmTNHnXbaaYHPOnfurH7++WellFKTJ09Wl19+eb3zt27dqpYtW6aUUmrnzp3qxBNPVK+99ppSSqlHHnlEjR8/Ximl1IIFC9TIkSPrnV9bW6u6du2q1q1bp3bu3KmOPPJI9dlnnymllDrvvPPUggULlFJKjR8/Xv3tb39TSinVt29ftWfPHjV16lT18ssvq7q6OjVo0CC1adOmsPfv9B0AH6o45a7sKBor/fvDu+9CVhacdBIsW5buGQlCRnH88cdTVeWY4xv2s5YtWzJw4EAAmjdvzjHHHENlZSUAL730EpdccgkA5557Lm+99RbKVktv9erVdOvWja5du9K8eXNGjRrFSy+9hFKKZcuWce65Oq3skksuoby8HNCL+d27d7Nt2zaaNWvG/PnzGTJkCO3atfPmQbhAnNmNmSOO0Il5Q4ZAYaF2eF9wQbpnJTQlrr8eLOYdT+jVCx58MOIh27dvp1evXoHXkyZN4vzzzw85pqKigqKiIsfzI31mUlNTwyuvvMJ1110HQFVVFQceeCAA2dnZtG3blk2bNrHvvvsGzrEeA9CpUydWrVrFpk2byMvLIzs7O/C+qaiuvvpqfv/733P44YfTr18/zjrrLJYuXRpxbl4jiqKxc+CB8M9/QlERXHihrkD7pz+le1aCkFRyc3ND/A9WLrroInbt2sVvv/1W75iBAwfyyy+/sNdeezF16tSw49fW1nLBBRdw7bXX0rVrV0/nbqe4uJji4mIApkyZwrXXXsuSJUuYO3cuBx54IPfddx++JFeTFkXRFNh7b1i6VOda3HijTsy7914pVS4knygr/3TwzDPPcOyxxzJx4kSuueYaFi5cGPhs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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]}]} -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # jupyter_ml4se 2 | Jupyter notebooks for sample scripts from 「ITエンジニアのための機械学習理論入門」 3 | 4 | Disclaimer: This is not an official Google product. 5 | -------------------------------------------------------------------------------- /appendix_colab.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/enakai00/jupyter_ml4se/4e250f0a23a2de1bce9b70cd76be132190b6372d/appendix_colab.zip -------------------------------------------------------------------------------- /ml4se_colab.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/enakai00/jupyter_ml4se/4e250f0a23a2de1bce9b70cd76be132190b6372d/ml4se_colab.zip -------------------------------------------------------------------------------- /photo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/enakai00/jupyter_ml4se/4e250f0a23a2de1bce9b70cd76be132190b6372d/photo.jpg -------------------------------------------------------------------------------- /train-images.txt.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/enakai00/jupyter_ml4se/4e250f0a23a2de1bce9b70cd76be132190b6372d/train-images.txt.gz -------------------------------------------------------------------------------- /train-labels.txt.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/enakai00/jupyter_ml4se/4e250f0a23a2de1bce9b70cd76be132190b6372d/train-labels.txt.gz --------------------------------------------------------------------------------