{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Logistic Regression (로지스틱 회귀분석) 분류 기법" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. 로지스틱 회귀분석의 이해" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1) 사전 지식\n", " - logistic function (= sigmoid function)\n", " - $g(z) = \\dfrac{1}{1 + e^{-z}}$" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nuQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import math \n", "from scipy import stats\n", "from pandas import Series, DataFrame\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import scipy\n", "%matplotlib inline\n", "\n", "def logistic(z):\n", " return 1.0 / (1.0 + np.power(math.e, -1.0 * z))\n", "\n", "fig = plt.figure(figsize=(12, 8))\n", "ax1 = fig.add_subplot(111)\n", "ax1.grid(True)\n", "xx = np.linspace(-5, 5, 100)\n", "ax1.plot(xx, logistic(xx))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " - 즉, logistic 함수에 입력으로 들어가는 $z$ 변수에 대해 다음과 같은 성질이 있다.\n", " - $g(z) >= 0.5$ if $z >= 0$ ($z$가 양수)\n", " - $g(z) < 0.5$ if $z < 0$ ($z$가 음수) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2) 로지스틱 회귀분석을 이해하기 위한 간단한 예제" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 예제 (Age and coronary heart disease (CHD))\n", "![CHD Data](./figures/chd.png)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
agechd
0220
1230
2240
3270
4280
5300
6300
7320
8330
9351
10380
11400
12411
13460
14470
15480
16491
17490
18501
19510
20511
21520
22540
23551
24581
25601
26600
27621
28651
29671
30711
31771
32811
\n", "
" ], "text/plain": [ " age chd\n", "0 22 0\n", "1 23 0\n", "2 24 0\n", "3 27 0\n", "4 28 0\n", "5 30 0\n", "6 30 0\n", "7 32 0\n", "8 33 0\n", "9 35 1\n", "10 38 0\n", "11 40 0\n", "12 41 1\n", "13 46 0\n", "14 47 0\n", "15 48 0\n", "16 49 1\n", "17 49 0\n", "18 50 1\n", "19 51 0\n", "20 51 1\n", "21 52 0\n", "22 54 0\n", "23 55 1\n", "24 58 1\n", "25 60 1\n", "26 60 0\n", "27 62 1\n", "28 65 1\n", "29 67 1\n", "30 71 1\n", "31 77 1\n", "32 81 1" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "age = np.array([22, 23, 24, 27, 28, 30, 30, 32, 33, 35, 38, 40, 41, 46, 47, 48, 49,\\\n", " 49, 50, 51, 51, 52, 54, 55, 58, 60, 60, 62, 65, 67, 71, 77, 81])\n", "chd = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1])\n", "df = pd.DataFrame({'age': age, 'chd': chd})\n", "df" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nMJjoBgCAwUQ3AAAMJroBAGAw0Q0AAIOJbgAAGEx0AwDAYKIbAAAGE90AADCY6AYAgMFENwAADCa6\nAQBgMNENAACDiW4AABhMdAMAwGCiGwAABhPdAAAwmOgGAIDBRDcAAAwmugEAYDDRDQAAg4luAAAY\nTHQDAMBgohsAAAYT3QAAMJjoBgCAwUQ3AAAMJroBAGAw0Q0AAIOJbgAAGEx0AwDAYKIbAAAGE90A\nADCY6AYAgMFENwAADCa6AQBgsIVFd1V9ZVXdXFWfqqr3VtXZJ9nnSVX1gar63ar6RFW9fhFjPR2t\nrq4ueghLxXzOlvmcHXM5W+Zztszn7JjLxVvkle43JHl/d/+dJB9I8sMn2eevk/zr7n5Wkr+f5F9W\n1TPmOMbTli/O2TKfs2U+Z8dczpb5nC3zOTvmcvEWGd0vT/K2yf23JfmeE3fo7j/u7o9P7v9lkiNJ\nzpvbCAEAYAYWGd1f1d33J2txneSrTrVzVV2Q5DlJPjJ8ZAAAMEPV3eMOXvW+JOeufyhJJ/n3SX6u\nuw+s2/dPu/sJGxzny5KsJvmP3f0rp3i9cScDAAAT3V3b2X/fqIEkSXd/x0bPVdX9VXVud99fVV+d\n5NgG++1L8o4kP3+q4J683rZOHgAA5mGRy0tuSvJ9k/v/LMlGQf3fk9zR3T85j0EBAMCsDV1ecsoX\nrjqQ5H8meXKSe5P84+7+XFV9TZKf6e7vqqpvSfKbST6RtWUpneRHuvvXFzJoAACYwsKiGwAAThd7\n8h0pq+q6yZrw29c9tumb7XByG70JkTndvqr6kqr6SFV9bDKX10weN5c7UFVnVNVHq+qmybb5nFJV\nHa2q2yafo7dOHjOfU6iqs6vq7VV1ZPLfz282l9OpqqdPPic/Ovnzgap6vfmcXlX9UFV9sqpur6pf\nqKqzzOd0quqqyf/Td9RIezK6k1yf5LITHtvKm+1wchu9CZE53abu/mKSF3T3c7P2Ky5fUlWXxFzu\n1FVJ7li3bT6n9zdJVrr7ud19yeQx8zmdn0zya919YZJnJ7kz5nIq3X3X5HPy4iR/N8nnk7wr5nMq\nVfW1SX4wycXdfVHWfnHGq2I+t62qnpXk+5N8U9b+v/5dVfXUTDGXezK6u/tDST57wsObvtkOJ7fB\nmxA9KeZ0Kt39V5O7X5K1/9B1zOXUqupJSV6a5GfXPWw+p1f52//tN5/bVFWPT/L87r4+Sbr7r7v7\ngZjLWXhxkt/v7vtiPnfiMUkeN/ktcPuT/GHM5zQuTPKR7v5idz+UtZ81fEWSl2Wbc7kno3sD23qz\nHU5u3ZsQ3ZLkXHO6fZOlEB9L8sdJ3tfdh2Mud+K/JPm3WfvHy8PM5/Q6yfuq6nBVvW7ymPncvq9L\n8idVdf1kScS1VfXYmMtZeGWSGyb3zecUuvszSd6U5A+yFtsPdPf7Yz6n8ckkz58sJ3ls1i4CPTlT\nzOUyRfeJ/IToNk3ehOgdSa6aXPE+cQ7N6RZ0999Mlpc8Kcklk29NmcspVNU/SHL/5Dsxp/o9/OZz\n675l8i38l2ZtKdnz4/NzGvuSXJzkpybz+fmsfbvZXO5AVZ2ZtSuIb588ZD6nUFVfkbWr2ucn+dqs\nXfH+JzGf29bddyZ5Y5L3Jfm1JB9L8tDJdt3sWMsU3fdX1blJcqo32+HkNngTInO6A93951l7J9WD\nMZfT+pYkL6uqe5L8YpIXVtXPJ/lj8zmd7v6jyZ/Hk/xykkvi83Man05yX3f/zmT7nVmLcHO5My9J\n8n+6+08m2+ZzOi9Ock93/9lkScS7kjwv5nMq3X19d39Td68k+VyST2WKudzL0V35/698bfXNdji5\nk70JkTndpqp64sM/wVxV+5N8R9bWyJvLKXT3j3T3U7r765NcnuQD3f2aJO+O+dy2qnrs5DtaqarH\nJfnOrL0Pgs/PbZp8W/m+qnr65KEXJfndmMudelXW/oH9MPM5nT9IcmlVfWlVVdY+P++I+ZxKVZ0z\n+fMpSf5h1pY/bXsu9+Tv6a6qG5KsJHlCkvuTXJO1KzZvzwlvtrOoMe4ltcGbECW5NSd5A6NFjXMv\nqKpvzNoPVJwxuf2P7v7x2uDNoBY30r2nqr49yb/p7peZz+lU1ddl7YpXZ215xC9090+Yz+lU1bOz\n9gO+Zya5J8lrs/bDa+ZyCpP1svcm+fru/ovJYz43p1Rrv7L28iQPZm1JxOuSfHnM57ZV1W8mOZC1\nufyh7l6d5nNzT0Y3AADsJXt5eQkAAOwJohsAAAYT3QAAMJjoBgCAwUQ3AAAMJroBAGAw0Q0AAIOJ\nbgAAGEx0Ayy5qnpXVR2uqk9U1esmj31/VX2qqm6pqmur6s2Tx59YVe+oqo9Mbs9b7OgBloN3pARY\nclX1Fd39uar60iSHk1yW5LeSPCfJXyb5YJKPd/frq+oXkvxUd/92VT05yXu7+5kLGzzAkti36AEA\nMNy/qqrvmdx/UpLXJFnt7geSpKrenuRpk+dfnOTCqqrJ9pdV1WO7+6/mOmKAJSO6AZZYVX17khcm\n+ebu/mJVfTDJkSQXbvQhk30fnNcYAU4H1nQDLLezk3x2EtzPSHJpki9L8m1VdXZV7Uvyvev2vznJ\nVQ9vVNWz5zpagCUlugGW268nObOqfjfJf0ry4SSfnty/Ncn/TvJ/kzww2f+qJN9UVbdV1SeTXDH/\nIQMsHz9ICXAaqqrHdffnq+oxSd6V5Lru/pVFjwtgWbnSDXB6OlRVH0vyiST3CG6AsVzpBgCAwVzp\nBgCAwUQ3AAAMJroBAGAw0Q0AAIOJbgAAGOz/AXzOw9J696PeAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df.plot(kind='scatter', x='age', y='chd', figsize=(12, 8));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 위 그림에서...\n", " - chd = 1은 심장병이 있다는 것이고 앞으로 y = 1 (양성 반응) 이라고 표기한다.\n", " - chd = 0은 심장병이 없다는 것이고 앞으로 y = 0 (음성 반응) 이라고 표기한다." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 로지스틱 회귀 분석을 이해하기 위하여, 우선 위 데이터에 대하여 단순하게 ***회귀 분석 (Linear Regression)***을 수행하여 산출한 h 함수 (hyperthesis)를 plotting " ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n1VSrPvoINt4YNrKhR5IkVZkQAjHG0JKvccZZTXKZOUmSpE84lyhJkiTlwOAsSZIk5cDgLEmSJOXA\n4CxJkiTlwOAsSZIk5cDgLEmSJOXA4CxJkiTlwOAsSZIk5cDgLEmSJOXA4CxJkiTlwOAsSZIk5cDg\nLEmSJOXA4CxJkiTlwOAsSZIk5cDgLEmSJOXA4CxJkiTlwOAsSZIk5cDgLEmSJOXA4CxJkiTlwOAs\nSZIk5cDgLEmSJOXA4CxJkiTlwOAsSZIk5cDgLEmSJOXA4CxJkiTlwOAsSZIk5cDgLEmSJOXA4CxJ\nkiTlwOAsSZIk5cDgLEmSJOXA4CxJkiTloKDgHELYKoTwhxDC0yGEySGEDus5ZpcQwtQQwt9CCH8J\nIZxdyDWVu/r6+tQlVBXHs7gcz+JxLIvL8Swux7N4HMv0Cp1xvhD4Y4zx34CpwEXrOWY18MMY477A\nAcAPQgh7F3hd5cAfsOJyPIvL8Swex7K4HM/icjyLx7FMr9Dg/E1gROP9EcDR6x4QY3wtxvjnxvvv\nA4uAnQu8riRJklRShQbnjjHGJZAFZKDjhg4OIXQG9gdmF3hdSZIkqaRCjHHDB4QwBdh+7aeACPwU\nGB5j3HqtY9+MMW7TxHm2BOqBn8UY79vA9TZckCRJklQEMcbQkuM3zuGE/9nUayGEJSGE7WOMS0II\nOwCvN3HcxsA9wMgNhebG67XoDUiSJEmlUGirxgTg5Mb7JwFNheI7gIUxxhsKvJ4kSZKURLOtGhv8\n4hC2BsYCuwIvAP1jjO+EEHYEfhtj/HoIoQ/wGPAXshaPCPwkxvhQwdVLkiRJJVJQcJYkSZJqRbKd\nA0MIQxt7pJ9c67lmN1TR+jW10Yxj2nIhhE1DCLNDCE80juWljc87lgUIIWwUQvhTCGFC42PHM08h\nhMUhhAWN36NzGp9zPPMQQugQQrg7hLCo8d/PXo5lfkIIezV+T/6p8c9lIYSzHc/8hRD+bwjhryGE\nJ0MI/y+E0MbxzE8I4ZzG/6YXlJFSbrk9DDh8nedy2VBF69fURjOOaQvFGFcCB8cYv0y2fGK/EEJP\nHMtCnQMsXOux45m/BqAuxvjlGGPPxuccz/zcADwQY9wH+BLwFI5lXmKMzzR+T3YFugHLgfE4nnkJ\nIewEnAV0jTF2IVvQ4TgczxYLIewLfAfoTvbf9a+HEPYgj7FMFpxjjNOBt9d5utkNVbR+TWw0swuO\naV5ijCsa725K9o9VxLHMWwhhF+BI4Pa1nnY88xf47L/fjmcLhRDaAwfFGIcBxBhXxxiX4VgWw6HA\nczHGl3A8C/E5YIvG1cnaAq/geOZjH2B2jHFljHEN2Wfv/g9wFC0cy5QzzuvTog1VtH5rbTQzC9je\nMW25xraCJ4DXgCkxxrk4loW4Hvgx2f+A/Ivjmb8ITAkhzA0hnNr4nOPZcl8A3gghDGtsLxgSQtgc\nx7IYBgCjG+87nnmIMb4K/Ap4kSwwL4sx/hHHMx9/BQ5qbM3YnGwiZ1fyGMtyC87r8pOLLdS40cw9\nwDmNM8/rjqFjmoMYY0Njq8YuQM/GX/M4lnkIIfx/wJLG34hsaJ12xzN3fRp/HX4kWVvWQfj9mY+N\nga7ALY3juZzsV7eOZQFCCJuQzeTd3fiU45mHEMLnyWaXOwE7kc08fwvHs8VijE8BVwNTgAeAJ4A1\n6zu0uXOVW3BeEkLYHmBDG6po/ZrYaMYxLUCM8V2yHS+PwLHMVx/gqBDC88BdwNdCCCOB1xzP/MQY\n/9n451Lg90BP/P7Mx8vASzHGeY2P7yUL0o5lYfoB82OMbzQ+djzzcyjwfIzxrcb2gvHAgTieeYkx\nDosxdo8x1gHvAE+Tx1imDs6BT89A5bqhitZvfRvNOKYtFELY9l+frA0htAX+k6xn3LHMQ4zxJzHG\n3WKMuwMDgakxxhOA+3E8WyyEsHnjb5YIIWwBHEa2Tr7fny3U+Cval0IIezU+dQjwNxzLQh1H9j/J\n/+J45udFoHcIYbMQQiD7/lyI45mXEMJ2jX/uBvwXWStRi8cy2TrOIYTRQB2wDbAEuJRs5uRu1tlQ\nJUmBFSY0sdEMMIf1bFKTqs5KEELYj+xDAhs13n4XY/x5aGLDn3SVVp4QwleBH8UYj3I88xNC+ALZ\nzFMkazX4fzHGqxzP/IQQvkT2odVNgOeBU8g+kOVY5qGxf/QFYPcY43uNz/m9maeQLYc6EFhF1l5w\nKtAOx7PFQgiPAVuTjeX/jTHW5/O96QYokiRJUg5St2pIkiRJFcHgLEmSJOXA4CxJkiTlwOAsSZIk\n5cDgLEmSJOXA4CxJkiTlwOAsSZIk5eD/B2oVf/Hxx3dnAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "slope, intercept, r_value, p_value, std_err = stats.linregress(age, chd)\n", "fig = plt.figure(figsize=(12, 8))\n", "ax1 = fig.add_subplot(111)\n", "ax1.scatter(age, chd)\n", "xx = np.linspace(age.min(), age.max(), 2)\n", "ax1.plot(xx, intercept + slope * xx)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 복습: 회귀 분석 (Linear Regression) 모형\n", " - $n$개의 속성($n$개의 예측 변수)을 지닌 훈련 데이터 $n$-벡터 $x^i=\\{x_{1}, x_{2}, ..., x_{n}\\}$가 총 $m$ (즉, $1 \\le i \\le m$)개 주어지고,\n", " - 각 $x^i$ 벡터마다 연관된 실수 값 $y^i$ (결과 변수)이 주어질 때,\n", " - 임의의 $n$-벡터 $x^i =\\{x_1, x_2,...,x_n\\}$에 대해 Hypothesis Function $h_{\\theta}(x^i)$ 는 다음과 같이 정의된다.\n", " $$ h_{\\theta}(x^i) = \\theta_0 + \\theta_1 x_1 + \\theta_2 x_2 + ... + \\theta_n x_n$$\n", " - 위 식에서 $\\theta=\\{\\theta_0, \\theta_1, \\theta_2, ..., \\theta_n\\}$는 계수 벡터(Coefficient Vector)이다. \n", " - 위 모형을 좀 더 간단히 표현하면 아래와 같다.\n", " - 항상 $x_0 = 1$일 때, 임의의 $(n+1)$-벡터 $x^i =\\{x_0, x_1, x_2,...,x_n\\}$에 대해\n", " - $h_\\theta(x^i) = \\theta^T \\cdot x^i$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3) 로지스틱 회귀 분석" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 로지스틱 회귀 분석 (Logistic Regression) 모형\n", " - ***logistic 함수와 기존 회귀 분석 모형을 합성한 함수 형태***\n", " - $n$개의 속성($n$개의 예측 변수)을 지닌 훈련 데이터 및 $x_{0}=1$를 지닌 $(n+1)$-벡터 $x^ii=\\{x_{0}, x_{1}, x_{2}, ..., x_{n}\\}$가 총 $m$ (즉, $1 \\le i \\le m$)개 주어지고,\n", " - 각 $X^i$ 벡터마다 연관된 분류 표기 값 $y^i$ ($y_i \\in \\{0, 1\\}$)이 주어질 때,\n", " - 임의의 $(n+1)$-벡터 $x^i =\\{1, x_1, x_2,...,x_n\\}$에 대해 Hypothesis Function $h_{\\theta}^L(x^i)$ 는 다음과 같이 정의된다.\n", " \n", " $$h_\\theta^L(x^i) = g(h_\\theta(x^i))= \\dfrac{1}{1 + e ^ {-h_\\theta(x^i)}} = \\dfrac{1}{1 + e ^ {-\\theta^T \\cdot x^i}}$$ \n", "\n", " - 위 식에서 $\\theta=\\{\\theta_0, \\theta_1, \\theta_2, ..., \\theta_n\\}$는 계수 벡터(Coefficient Vector)이다." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- ***로지스틱 회귀 분석 모형($h_\\theta^L(X)$)의 해석***\n", "\n", " - 계수 백터 $\\theta$를 구했다고 가정할 때, 임의의 입력 $x$에 대해 $y=1$ (분류 결과가 1)이 되는 추정 확률\n", " - 즉, $h_\\theta^L(x) = P(y = 1 | x; \\theta)$\n", " - $h_\\theta^L(x) = 0.75$의 의미\n", " - 입력 $x$에 대해 심장병 (chd)이 존재할 확률이 0.75이다." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- ***로지스틱 회귀 분석 모형($h_\\theta^L(x)$)을 활용한 분류 결정 (Classification Decision)***\n", " - $h_\\theta^L(x) = g(h_\\theta(x)) >= 0.5$ if $h_\\theta(x) = \\theta^T \\cdot x >= 0$\n", " - 즉, $\\theta^T \\cdot x >= 0$이면 양성으로 분류하여 $y=1$로 분류한다.\n", " - $h_\\theta^L(x) = g(h_\\theta(x)) < 0.5$ if $h_\\theta(x) = \\theta^T \\cdot x < 0$\n", " - 즉, $\\theta^T \\cdot x < 0$이면 음성으로 분류하여 $y=0$로 분류한다." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 로지스틱 회귀 분석에서 계수 벡터 $\\theta$를 구하는 수학적 모델\n", " - 주어진 통계적 수치(훈련 데이터)들에 대해 다음 비용 함수 (Cost Function) $J^L(\\theta)$를 구한다. \n", " \n", " $$J^L(\\theta) = \\dfrac{1}{m} \\sum_{i = 1}^m \\big( h_\\theta^L(x_i) - y_i \\big)^2 = \\dfrac{1}{m} \\sum_{i=1}^m \\big( \\dfrac{1}{1 + e^{-h_\\theta(x_i)}} - y_i \\big)^2$$\n", " \n", " - 위 식에서 \n", " - $y_i \\in \\{0, 1\\}$\n", " - 비용 함수 $J^L(\\theta)$를 최소로 만드는 $\\hat \\theta$ 벡터가 로지스틱 회귀 분석에서 찾으려고 하는 것임\n", " \n", " $$\\hat \\theta = \\newcommand{\\argmin}{\\arg\\!\\min} \\argmin_\\theta J^L(\\theta)$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 비용 함수 $J^L(\\theta)$를 최소로 만드는 $\\theta$ 벡터를 구하는 방법\n", " - Gradient Descent\n", " - Stochastic Gradient Descent\n", " - [참고]: http://www.cs.rpi.edu/~magdon/courses/LFD-Slides/SlidesLect09.pdf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Univariate Logistic Regression (단일 변수 로지스틱 회귀분석)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- $m$개의 통계치 $x^i$ (즉, $1 \\le i \\le m$)와 이와 연관된 실수 값 $y^i$에 대하여\n", "- 새로운 통계 수치 $x$와 연관된 실수 값 $y$를 예측하기 위해 다음과 같은 모형을 고려함\n", " $$$$ $$h_{\\theta_0, \\theta_1}(x^i) = \\theta_0 + \\theta_1 \\cdot x^i$$ $$$$\n", " $$$$ $$h_{\\theta_0, \\theta_1}^L(x^i) = g(h_{\\theta_0, \\theta_1}(x^i))= \\dfrac{1}{1 + e ^ {-h_{\\theta_0, \\theta_1}(x^i)}} = \\dfrac{1}{1 + e ^ {-(\\theta_0 + \\theta_1 \\cdot x^i)}}$$ $$$$\n", "\n", "- 최적의 h 함수를 위한 $\\theta_0$와 $\\theta_1$을 구하기 위하여 다음 비용 함수 $J(\\theta_0, \\theta_1)$를 최소로 만드는 $\\theta_0, \\theta_1$ 벡터를 구한다.\n", " $$$$ $$J^L(\\theta_0, \\theta_1) = \\dfrac{1}{m} \\sum_{i = 1}^m \\big( h_{\\theta_0, \\theta_1}^L(x^i) - y_i \\big)^2 = \\dfrac{1}{m} \\sum_{i=1}^m \\big( \\dfrac{1}{1 + e^{-(\\theta_0 + \\theta_1 \\cdot x^i)}} - y^i \\big)^2$$ $$$$\n", " - 위 식에서 \n", " - $y_i \\in \\{0, 1\\}$\n", " - $\\theta_0$는 intercept, $\\theta_1$은 coefficient 라고 부른다." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### - sklearn 모듈 활용" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[22], [23], [24], [27], [28], [30], [30], [32], [33], [35], [38], [40], [41], [46], [47], [48], [49], [49], [50], [51], [51], [52], [54], [55], [58], [60], [60], [62], [65], [67], [71], [77], [81]]\n", "[0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1]\n", "Coefficients: [[ 0.03851967]]\n", "Intercept: [-1.89317939]\n" ] } ], "source": [ "from sklearn import linear_model\n", "regr = linear_model.LogisticRegression()\n", "\n", "age_ = []\n", "for i in age:\n", " age_.append([i])\n", "\n", "print age_\n", "print chd\n", "\n", "regr = regr.fit(age_, chd)\n", "\n", "print 'Coefficients:', regr.coef_\n", "print 'Intercept:', regr.intercept_" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def h_theta(x):\n", " return regr.intercept_[0] + regr.coef_[0][0] * x" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAs4AAAHfCAYAAABAjl6PAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XuUnlWdJ/rvDhcNCmoEVC6CrU2LtlwVUWgtbhIIg1wU\nAl56XN1znLWO073mnHWO9qwzy5x15qwz/cf0TPfpM8thxnEEiVwSEoPcFQsEgaDIRUkaujEIyCVe\ngG5uhmSfP3ZhxZjLU1Vv6nmr8vms9S7qfd+nnuf37lTBl53fs3eptQYAANi6OX0XAAAAM4HgDAAA\nHQjOAADQgeAMAAAdCM4AANCB4AwAAB0MJDiXUr5cSnmylHLvFt4/v5Ryz9jjllLKewZxXQAAmC6D\nmnH+SpKTt/L+Q0k+VGs9NMm/S/JfB3RdAACYFjsP4iS11ltKKQds5f3bN3p6e5J9B3FdAACYLn30\nOP9pkmt6uC4AAEzaQGacuyqlHJfkM0mO3cox9gAHAGC7q7WWiRw/bTPOpZRDklyQ5PRa66+2dmyt\n1WMAjy9+8Yu91zCbHsbTeA7rw1gaz2F+GE9jOayPyRhkcC5jj999o5S3Jlma5FO11n8Y4DUBAGBa\nDKRVo5SyOMlIkjeWUn6a5ItJdk1Sa60XJPm3SeYl+c+llJJkXa31qEFcGwAApsOgVtU4fxvv/4sk\n/2IQ16K7kZGRvkuYVYznYBnPwTGWg2U8B8t4Do6x7F+ZbI/H9lJKqcNWEwAAs0spJXVYbw4EAICZ\nTHAGAIAOBGcAAOhAcAYAgA4EZwAA6EBwBgCADgRnAADoQHAGAIAOBGcAAOhAcAYAgA4EZwAA6EBw\nBgCADgRnAADoQHAGAIAOBGcAAOhAcAYAgA4EZwAA6EBwBgCADgRnAADoQHAGAIAOBGcAAOhAcAYA\ngA4EZwAA6EBwBgCADgRnAADoQHAGAIAOBGcAAOhAcAYAgA4EZwAA6EBwBgCADgRnAADoQHAGAIAO\nBGcAAOhAcAYAgA4EZwAA6EBwBgCADgRnAADoQHAGAIAOBGcAAOhAcAYAgA4EZwAA6EBwBgCADgRn\nAADoQHAGAIAOBGcAAOhAcAYAgA4EZwAA6EBwBgCADgRnAADoQHAGAIAOBGcAAOhAcAYAgA4EZwAA\n6EBwBgCADgYSnEspXy6lPFlKuXcrx/xNKeXBUsrdpZTDBnFdAACYLoOacf5KkpO39GYp5ZQkb6+1\n/n6Szyb50oCuC2xk7dq1ufPOO7N27dq+S5mS2fI5BmFbY9FlrIZhPKejhkFcY1jOMR3X2FF+LqbD\nsHyOYaljVqu1DuSR5IAk927hvS8lOXej56uSvGkLx1Zg4hYvvqTOnTuvvu51R9S5c+fVxYsv6buk\nSZktn2MQtjUWXcZqGMZzOmoYxDWG5Ryzpc6ZUMMgDMvnGJY6ZpKxzDmxvDvRb9jiibYenK9M8sGN\nnn8ryRFbOHY7DQ/MXk899VSdO3deTe6pSa3JPXXu3Hn1qaee6ru0CZktn2MQtjUWXcZqGMZzOmoY\nxDWG5Ryzpc6ZUMMgDMvnGJY6ZprJBOedp29uu7tFixb95uuRkZGMjIz0VgvMBGvWrMmuux6YF144\nZOyVQ7LLLgdkzZo12WuvvXqtbSJmy+cYhG2NRZexGobxnI4aBnGNYTnHbKlzJtQwCMPyOYaljmE3\nOjqa0dHRqZ1kokl7S49MrFVjdbRqwMDMltmG2fI5BsGM8/ReY1jOMVvqnAk1DMKwfI5hqWOmSc+t\nGgcmuW8L752a5Kqxr49OcvtWzrOdhgdmt1f62/bY4/AZ3d82Wz7HIGxrLLqM1TCM53TUMIhrDMs5\nZkudM6GGQRiWzzEsdcwkkwnOpX3f1JRSFicZSfLGJE8m+WKSXccKumDsmL9NMj/Jc0k+U2u9awvn\nqoOoCXZEa9euzZo1a3LggQfO6L+emy2fYxC2NRZdxmoYxnM6ahjENYblHNNxjR3l52I6DMvnGJY6\nZopSSmqtZULfM2whVXAGAGB7m0xwtnMgAAB0IDgDAEAHgjMAAHQgOAMAQAeCMwAAdCA4AwBAB4Iz\nAAB0IDgDAEAHgjMAAHQgOAMAQAeCMwAAdCA4AwBAB4IzAAB0IDgDAEAHgjMAAHQgOAMAQAeCMwAA\ndCA4AwBAB4IzAAB0IDgDAEAHgjMAAHQgOAMAQAeCMwAAdCA4AwBAB4IzAAB0IDgDAEAHgjMAAHQg\nOAMAQAeCMwAAdCA4AwBAB4IzAAB0IDgDAEAHgjMAAHQgOAMAQAeCMwAAdCA4AwBAB4IzAAB0IDgD\nAEAHgjMAAHQgOAMAQAeCMwAAdCA4AwBAB4IzAAB0IDgDAEAHgjMAAHQgOAMAQAeCMwAAdCA4AwBA\nB4IzAAB0IDgDAEAHgjMAAHQgOAMAQAeCMwAAdCA4AwBAB4IzAAB0MJDgXEqZX0pZXUp5oJTy+c28\nv0cpZUUp5e5Syn2llH8+iOsCAMB0KbXWqZ2glDlJHkhyQpKfJbkzycJa6+qNjvmLJHvUWv+ilLJn\nkr9L8qZa68ubOV+dak0AALA1pZTUWstEvmcQM85HJXmw1vpwrXVdkkuSfHSTY2qS3ce+3j3JLzYX\nmgEAYFgNIjjvm+SRjZ4/Ovbaxv42ybtKKT9Lck+SPx/AdQEAYNrsPE3XOTnJD2utx5dS3p7khlLK\nIbXWf9rcwYsWLfrN1yMjIxkZGZmWIgEAmJ1GR0czOjo6pXMMosf56CSLaq3zx55/IUmttf7lRsd8\nM8n/U2u9dez5t5N8vtb6/c2cT48zAADbVV89zncmeUcp5YBSyq5JFiZZsckxDyc5cazINyU5KMlD\nA7g2AABMiym3atRa15dSPpfk+rQg/uVa66pSymfb2/WCJP8uyf8opdw79m3/e631l1O9NgAATJcp\nt2oMmlYNAAC2t75aNQAAYNYTnAEAoAPBGQBgFli3Lnnppb6rmN0EZwCAGWjDhuTuu5O/+qtkwYJk\nzz2Ta67pu6rZzc2BAAAzQK3Jgw8mN96YfPvbyXe+k7zxjckJJyTHH5+MjLTwTDeTuTlQcAYAGFJP\nPpl861vJDTe0sFxrC8qvhOX99uu7wplLcAYAmMGefz65+ebxsPzTn7aZ5JNOamH5oIOSMqGox5YI\nzgAAM8j69ckPf9hC8g03JCtXJocf3oLySScl73tfsvOUt6tjcwRnAIAh95OfjM8o33hjsvfe40H5\nwx9Odt+97wp3DIIzAMCQefrpFpBfmVX+x39MTjyxBeUTT9Sn3BfBGQCgZy+/3FourruuPX784+SY\nY8Znlf/wD5M5FgTuneAMANCDxx5rIfnaa1sbxv77J/PnJyefnHzwg8mrX913hWxKcAYAmAYvvZTc\nemsLytdemzz6aJtNfiUs77NP3xWyLYIzAMB28tBD40H5ppuSgw9uIXn+fKtfzESCMwDAgDz/fDI6\nOh6Wn322heT589tNfXbpm9kEZwCASao1Wb06ueaaFpRvuy058sjxsHzIIW7qm00EZwCACXjxxeQ7\n30muuqo91q9PTjmlPY4/Ptljj74rZHuZTHDWjQMA7FAeeaSF5Kuvbq0Yhx6aLFiQrFjRloqzpTVb\nYsYZAJjV1q9Pbr99fFb5scda68WCBe3mvnnz+q6QPmjVAABI8stftj7lq65q6yvvt18LygsWJO9/\nf7LTTn1XSN8EZwBgh1Rrct9947PK992XjIy0oHzqqba15ncJzgDADuOFF5Ibb0yuvLL1K++yy/is\n8oc/bLc+ts7NgQDArPbUU21GecWKFpoPPzw57bTk+uuTP/gDN/axfZlxBgCG1itrK69Y0R4//nHy\nkY8kp5/elox74xv7rpCZSqsGADDjvfxycuut42H5xRdbUD799Na3/KpX9V0hs4FWDQBgRnr22bb6\nxYoVrV/5wANbUL7ssuSww7RgMBzMOAMAvfjpT9uNfStWJN/7XnLssS0sn3Zasv/+fVfHbKdVAwAY\nWrUmP/xhC8rf+Ebbwe/UU5OPfrT1Le++e98VsiMRnAGAobJ+fXLLLcmyZcny5cnOOydnnNFmlj/4\nwfYc+qDHGQDo3YsvJt/6VgvLV16Z7LtvcuaZ7es//EP9ysxcZpwBgCl75pl2U9+yZW1N5UMOaWH5\njDOSt72t7+rgd2nVAACmzZNPtl7lZcva8nEf+tB4G8bee/ddHWyd4AwAbFcPPdSC8rJlbTOS+fPb\nzPIpp7i5j5lFcAYABqrW5N57x8PyE0+0VTDOPDM5/nibkTBzCc4AwJRt2JCsXJksWZJccUV77cwz\n2+MDH0h22qnf+mAQrKoBAEzKhg1tE5IlS5KlS1vbxcc+1oLzoYdaCQMSwRkAdlgvv5x897stLC9b\nluy1VwvL112XvOtdfVcHw0dwBoAdyLp1yejoeFjef/8WlkdHk4MO6rs6GG6CMwDMcr/+dduQZMmS\ntt31O97RwvIdd1hjGSbCzYEAMAu9+GLbiGTJkuSb30ze/e4Wls86q80yw47OqhoAsAN7/vnk2mtb\nWL7mmuTww5Ozz26rYeyzT9/VwXARnAFgB/Pcc22r68suazPM739/m1k+4wy798HWCM4AsAN44YU2\no3zppW0FjKOPTj7+8RaW3/jGvquDmUFwBoBZ6sUXW0i+7LI2w3zkkcm557Y2jD337Ls6mHkEZwCY\nRX796+SGG9rM8pVXJocd1sLyWWdpw4CpEpwBYIZbty759rfbzPI3vtE2Ijn33Na3/OY3910dzB6C\nMwDMQC+/nHznOy0sL1vWNiI555zWt7zvvn1XB7PTZIKzDVAAoAfr1yc339zaMK64om1Ecs45yV13\nJW99a9/VAZsjOAPANNmwIbnlljazvGRJm00+91w7+MFMITgDwHZUa7JyZfL1ryeXX57stVebWf7u\nd5Pf//2+qwMmQnAGgO3gRz9qYfmSS5Kdd07OO6/d9PfOd/ZdGTBZgjMADMhDD7Wg/PWvJ08/nSxc\n2GaZDz88KRO6BQkYRlbVAIApePzx1rP89a+34Pyxj7XZ5WOOSebM6bs6YEssRwcA0+BXv0qWLm1h\n+a67ktNPb2H5hBOSXXbpuzqgC8EZALaT555LVqxoYfmmm5KTTmph+dRTk7lz+64OmKjegnMpZX6S\n/5RkTpIv11r/cjPHjCT5j0l2SbK21nrcFs4lOAMwFF56KbnuuhaWr7km+cAHWlg+44xkjz36rg6Y\nil6CcyllTpIHkpyQ5GdJ7kyysNa6eqNjXpfke0k+Umt9rJSyZ63151s4n+AMQG/Wr09GR1tYXrYs\nefe7W1j+2MfaUnLA7NDXzoFHJXmw1vrwWBGXJPloktUbHXN+kqW11seSZEuhGQD6UGty++1tRYzL\nLkv22aeF5bvvTvbfv+/qgGExiOC8b5JHNnr+aFqY3thBSXYppXwnyWuT/E2t9aIBXBsAJu3++5OL\nL26zy7vu2sLyTTclBx3Ud2XAMJqudZx3TnJEkuOTvCbJbaWU22qtf7+5gxctWvSbr0dGRjIyMjIN\nJQKwI/jZz1pQvvji5IknkvPPb9tfW2sZZrfR0dGMjo5O6RyD6HE+OsmiWuv8sedfSFI3vkGwlPL5\nJK+utf6fY8//W5Jraq1LN3M+Pc4ADNQzzyRXXNHC8g9+kJx5ZvKJTyQjI8lOO/VdHdCHvnqc70zy\njlLKAUkeT7IwyXmbHPONJP9vKWWnJK9K8v4kfzWAawPAZv36120ljIsvbitjHHdc8tnPJqedZvk4\nYHKmHJxrretLKZ9Lcn3Gl6NbVUr5bHu7XlBrXV1KuS7JvUnWJ7mg1nr/VK8NABvbsCG59dYWlpcs\nSd71rjaz/KUvJfPm9V0dMNPZAAWAGe/HP06+9rVk8eJk992TT36y3eh3wAF9VwYMq75aNQBg2j36\n6PhNfj//ebvJb8WK5JBD3OQHbB9mnAGYMZ5+Olm6tIXlu+9OzjqrtWJ86ENu8gMmprcttwdJcAZg\nYy+9lFx9dQvLN9yQnHBCC8sLFiSvfnXf1QEzleAMwKywYUPy3e+2sLx0afKe97S+5bPPTt7whr6r\nA2YDPc4AzGj33dfC8uLFyetf38Kyba+BYSE4A9Crn/2sBeWLLkp+9at2k99VV7VZZoBholUDgGn3\n3HPJsmXJhRcm3/9+28nvU59qN/nNmdN3dcCOQKsGAENr/frkxhvbzPKKFckxxyR/8ifJN75hJz9g\nZjDjDMB2dd99LSxffHHylre0meWFC5M3vanvyoAdmRlnAIbCE0+M9y3//OftJr8bbmhbYAPMVGac\nARiI559Pli9vYfn225MzzmizyyMj+paB4WPGGYBptWFDMjrawvLy5cnRR7ewvHRpsttufVcHMFhm\nnAGYsPvvb2H5a19L9tyzheXzzms9zAAzgRlnALabp55Kvv71toTcE0+0ba+vvtp6y8COw4wzAFv0\nwgtt6bgLL0xuvTU5/fTk059Ojjsu2WmnvqsDmDwzzgBM2YYNyc03t1aMZcuS972vtWJcdlnymtf0\nXR1Af8w4A5AkWb16vG/5da9rM8vnn5/ss0/flQEMnhlnACZk7drkkktaYH700RaUV6xIDj2078oA\nho8ZZ4AdzIsvJlde2cLyzTcnp53WWjFOOCHZ2XQKsIOYzIyz4AywA9iwod3cd9FFbY3lww9vYfms\ns5Ldd++7OoDpp1UDgN/y4IMtLF90Ubux71OfSu65J9lvv74rA5h5BGeAWeYXv0guvbQtIbdmTduY\n5IorksMOS8qE5lYA2JhWDYBZ4KWXkquuamF5dDQ59dQ2u3zSSfqWATZHjzPADqTW5LbbWlhesqTt\n4PfpTydnn53ssUff1QEMNz3OADuAhx4a71veZZcWlu+6K3nrW/uuDGB2E5wBZoBf/Sq5/PI2u/zA\nA8nChW395SOP1LcMMF20agAMqXXrkmuvbWH5hhuSj3yk9S3Pn99mmgGYPD3OADNcrckPftDC8iWX\nJH/wBy0sf/zjyRve0Hd1ALOHHmeAGeqnP00uvrgF5nXrWli+7bbk7W/vuzIAXiE4A/TkH/+x7eJ3\n4YVtU5KPfzz58peTD3xA3zLAMNKqATCNXn45+fa3W1i+6qrkwx9uq2IsWJC8+tV9Vwew49DjDDCk\n7r23heXFi9t215/+dHLuuclee/VdGcCOSY8zwBB5/PEWlC+8MHn66eSTn0xuvDF55zv7rgyAyTDj\nDDBAzz+fLF/ewvIddyRnntlmlz/0oWTOnL6rA+AVZpwBerBhQ3LTTS0sL1+eHH108sd/nFxxRbLb\nbn1XB8CgmHEGmKRVq9q211/7WjJvXptZPu+85C1v6bsyALbFjDPAdrZ2bduY5MILk8ceSz7xieSb\n30wOOaTvygDY3sw4A2zDiy+2cHzhhcnNNyenndZml084Idlpp76rA2AyzDgDDEityfe+18LykiXJ\nYYe13fwuvjjZffe+qwOgD4IzwEb+4R9a3/JFFyWvelWbWb777mT//fuuDIC+Cc7ADu9Xv0ouu6zN\nLj/4YLvB79JLkyOPtPU1AOP0OAM7pF//Orn22haWb7ghOfnkNrt88snJLrv0XR0A25sttwG2otbk\nttva8nGXX54cfHDbze/jH0/e8Ia+qwNgOrk5EGAzHnig3dT3ta+12eRPfSpZuTJ529v6rgyAmURw\nBmaltWtbn/JFFyUPP5wsXNj6mI84Qt8yAJOjVQOYNZ5/Plmxos0s33JLW2/5k59MTjwx2dk0AQAb\n0aoB7HDWr09GR1tYXr48Oeqo1opxySXJa1/bd3UAzCZmnIEZ6d57W1hevDjZe+8WlhcuTN7ylr4r\nA2AmMOMMzGqPPtqC8te+ljzzTPKJTyTXXZe8+919VwbAjsCMMzDUnn02Wbq0heW7707OPrv1LR97\nbDJnTt/VATBTWccZmBXWrWszyRdd1DYpOf74FpYXLEhe/eq+qwNgNhCcgRmr1uSOO9rM8mWXJQcd\n1MLyOeck8+b1XR0As40eZ2DG+fu/H9+cZM6cdpPf7bcnv/d7fVcGAL9NcAam3RNPtFnlxYuTn/yk\nrYaxeHHy3vfanASA4TWQW2tKKfNLKatLKQ+UUj6/lePeV0pZV0o5axDXBWaOZ59NvvrV5OSTk3e+\nM/n+95NFi5LHHkv++q+T971PaAZguE25x7mUMifJA0lOSPKzJHcmWVhrXb2Z425I8kKS/15rvWIL\n59PjDLPESy8lV1/dZpOvvz457rjk/PPbjn677dZ3dQDsyPrqcT4qyYO11ofHirgkyUeTrN7kuH+V\nZEmS9w3gmsCQWr8+uemmFpaXLUsOOaSF5f/yX9zkB8DMNojgvG+SRzZ6/mhamP6NUso+Sc6otR5X\nSvmt94CZr9bkrrvaTX6XXJK8+c1tc5JFi5L99uu7OgAYjOm6OfA/Jdm493mr0+KLFi36zdcjIyMZ\nGRnZLkUBU/Pgg21mefHiNtN8/vnJt7+dHHxw35UBwG8bHR3N6OjolM4xiB7no5MsqrXOH3v+hSS1\n1vqXGx3z0CtfJtkzyXNJ/qda64rNnE+PMwyxxx9vs8qLFyePPJKce24LzEcd5eY+AGaOXjZAKaXs\nlOTv0m4OfDzJyiTn1VpXbeH4ryS50s2BMHM8/XRyxRUtLP/gB8kZZ7SwfNxxyc4WtQRgBurl5sBa\n6/pSyueSXJ+2vN2Xa62rSimfbW/XCzb9lqleE9j+XnwxueqqFpa/9a3khBOSf/kv27bXc+f2XR0A\nTD9bbgO/sW5dcuONrRVj+fLkyCPbzPJZZyWvf33f1QHA4PTSqjFogjNMr/Xrk1tuaWF56dK21fW5\n57bHPvv0XR0AbB99reMMzDC1Jnfc0cLyZZcle+/dtr2+/fYWnAGA3yU4ww6i1uSee1pYvvTS5FWv\namHZ8nEA0I3gDLPcqlXjYfmll1pYXr687ehn+TgA6E5whlnooYdaUL7kkuTnP0/OOSf56lettQwA\nU+HmQJglHn00ufzyFpZ/8pPkYx9rs8vHHpvMmdN3dQAwXKyqATuYp55KlixpYflHP2obkyxcmBx/\nvI1JAGBrBGfYAfziF61H+dJLk5Ur24YkCxcmH/lIu+EPANg2wRlmqVfC8uWXJ7fdlpx0UltnecGC\nZLfd+q4OAGYewRlmkc2F5Y9/vIXl17627+oAYGYTnGGGE5YBYHoIzjADCcsAMP0EZ5ghNheWzzkn\nOfVUYRkApoPgDENMWAaA4SE4w5ARlgFgOAnOMASeeKKF5aVL2zrLwjIADB/BGXry8MPJsmUtLP/o\nRy0kn3VWMn9+8prX9F0dALApwRmm0QMPJFdc0cLymjXJ6acnZ5+dnHCCHfwAYNgJzrAd1Zrcd994\nWP7FL5Izz2xh+UMfSnbeue8KAYCuBGcYsFqTO+9sQfmKK5J161pQPvvs5Oijkzlz+q4QAJiMyQRn\nc2SwifXrk1tvHQ/Lr3lNC8qXXpocfnhSJvQrBgDMFoIzJPn1r5PR0RaWly9P9tmn3dx33XXJu97V\nd3UAwDAQnNlhPftscu21LShfe21y0EFtZvl730ve/va+qwMAho0eZ3Yojz+eXHllC8u33JIce2zy\n0Y+2FTHe8pa+qwMApoubA2EzVq9OvvGNFpZXr05OOSU544y2xvIee/RdHQDQB8EZkmzY0HbsW768\nPf7pn9qs8hlnJB/+cLLrrn1XCAD0TXBmh/XSS8mNN7agvGJFsuee42H5yCOthAEA/DbL0bFDefrp\n5OqrWxvGddcl73lPC8rf/W7yjnf0XR0AMNuYcWZGeeihdnPflVe2doyRkRaWTzst2XvvvqsDAGYK\nrRrMOuvXJ7fd1oLyN7/Ztrk+7bT2OOmktjkJAMBECc7MCs88k1x/fQvL11yT7Ltv8s/+WXu89722\nuQYApk5wZsbatAXj2GNbUF6wIHnrW/uuDgCYbQRnZozNtWAsWNDC8oknJq99bd8VAgCzmeDMUHvm\nmbb6xTe/+dstGKedlrzvfVowAIDpIzgzVGpNVq1qS8ZdfXXy/e8nxxwzHpa1YAAAfRGc6d1zz7WN\nSK6+us0q15qcemp7HHecFgwAYDjYAIVePPjg+Kzy977X2i5OPTW56qrkXe+yax8AMDuYcWbCXngh\nuemm8bD8wgvJKae0sHziickee/RdIQDA1mnVYLv5yU/G2y9uvjk59NDxFoxDDjGrDADMLIIzA3X3\n3clFF7XA/Mtfjs8qn3RS8oY39F0dAMDk6XFmoB55JHn961t4PuIIy8UBADs2M84AAOxwJjPjbA4R\nAAA6EJwBAKADwRkAADoQnAEAoAPBGQAAOhCcAQCgA8EZAAA6EJwBAKADwRkAADoQnAEAoAPBGQAA\nOhCcAQCgA8EZAAA6GEhwLqXML6WsLqU8UEr5/GbeP7+Ucs/Y45ZSynsGcV0AAJgupdY6tROUMifJ\nA0lOSPKzJHcmWVhrXb3RMUcnWVVrfaaUMj/Jolrr0Vs4X51qTQAAsDWllNRay0S+ZxAzzkclebDW\n+nCtdV2SS5J8dOMDaq2311qfGXt6e5J9B3BdAACYNoMIzvsmeWSj549m68H4T5NcM4DrAgDAtNl5\nOi9WSjkuyWeSHLu14xYtWvSbr0dGRjIyMrJd6wIAYHYbHR3N6OjolM4xiB7no9N6luePPf9Cklpr\n/ctNjjskydIk82ut/7CV8+lxBgBgu+qrx/nOJO8opRxQStk1ycIkKzYp7K1poflTWwvNAAAwrKbc\nqlFrXV9K+VyS69OC+JdrratKKZ9tb9cLkvzbJPOS/OdSSkmyrtZ61FSvDQAA02XKrRqDplUDAIDt\nra9WDQAAmPUEZwAA6EBwBgCADgRnAADoQHAGAIAOBGcAAOhAcAYAgA4EZwAA6EBwBgCADgRnAADo\nQHAGAIAOBGcAAOhAcAYAgA4EZwAA6EBwBgCADgRnAADoQHAGAIAOBGcAAOhAcAYAgA4EZwAA6EBw\nBgCADgRnAADoQHAGAIAOBGcAAOhAcAYAgA4EZwAA6EBwBgCADgRnAADoQHAGAIAOBGcAAOhAcAYA\ngA4EZwAA6EBwBgCADgRnAADoQHAGAIAOBGcAAOhAcAYAgA4EZwAA6EBwBgCADgRnAADoQHAGAIAO\nBGcAAOiEF07eAAAKY0lEQVRAcAYAgA4EZwAA6EBwBgCADgRnAADoQHAGAIAOBGcAAOhAcAYAgA4E\nZwAA6EBwBgCADgRnAADoQHAGAIAOBGcAAOhAcAYAgA4GEpxLKfNLKatLKQ+UUj6/hWP+ppTyYCnl\n7lLKYYO4LgAATJcpB+dSypwkf5vk5CTvTnJeKeWdmxxzSpK311p/P8lnk3xpqtdl+1u7dm3uvPPO\nrF27dlLvdz1mqgZR57asWrUqX/3qV7Nq1apJn2M66pwOg6hzpnzWbZmO35HpGG9/puNmy+cAtpNa\n65QeSY5Ocs1Gz7+Q5PObHPOlJOdu9HxVkjdt4XyV/i1efEmdO3defd3rjqhz586rixdfMqH3ux4z\nDHVuy+c+9+c1mVuTg2oyt37uc382lHVOh0HUOVM+67ZMx+/IdIy3P9Nxs+VzAN2MZc6J5d6JfsPv\nnCA5O8kFGz3/ZJK/2eSYK5N8cKPn30pyxBbOt90GiG6eeuqpOnfuvJrcU5Nak3vq3Lnz6lNPPdXp\n/a7HDEOd23L//fePhebxcyRz6/333z9UdU6HQdQ5Uz7rtkzH78h0jLc/03Gz5XMA3U0mOO88HbPa\nE7Vo0aLffD0yMpKRkZHeatkRrVmzJrvuemBeeOGQsVcOyS67HJA1a9Zkr7322ub7Xc4xLHVuy8qV\nK5Psn2T8HMl+WblyZQ4++OChqXM6DKLOmfJZt2U6fkemY7z9mY6bLZ8D2LLR0dGMjo5O7SQTTdqb\nPtJaNa7d6HmXVo3V0aoxtMw4jzPjPM7s5Dgzzt2vMVPMls8BdJeeWjV2SvL3SQ5IsmuSu5McvMkx\npya5qo4H7du3cr7tOER09Uqv3x57HL7Vvsgtvd/1mGGoc1s+97k/GwvPv1+n2uO8PeucDoOoc6Z8\n1m2Zjt+R6Rhvf6bjZsvnALqZTHAu7fumppQyP8lfp63S8eVa678vpXx2rKALxo752yTzkzyX5DO1\n1ru2cK46iJqYurVr12bNmjU58MADN/tXldt6v+sxw1DntqxatSorV67MUUcd1blFo486p8Mg6pwp\nn3VbpuN3ZDrG25/puNnyOYBtK6Wk1lom9D3DFlIFZwAAtrfJBGc7BwIAQAeCMwAAdCA4AwBAB4Iz\nAAB0IDgDAEAHgjMAAHQgOAMAQAeCMwAAdCA4AwBAB4IzAAB0IDgDAEAHgjMAAHQgOAMAQAeCMwAA\ndCA4AwBAB4IzAAB0IDgDAEAHgjMAAHQgOAMAQAeCMwAAdCA4AwBAB4IzAAB0IDgDAEAHgjMAAHQg\nOAMAQAeCMwAAdCA4AwBAB4IzAAB0IDgDAEAHgjMAAHQgOAMAQAeCMwAAdCA4AwBAB4IzAAB0IDgD\nAEAHgjMAAHQgOAMAQAeCMwAAdCA4AwBAB4IzAAB0IDgDAEAHgjMAAHQgOAMAQAeCMwAAdCA4AwBA\nB4IzAAB0IDgDAEAHgjMAAHQgOAMAQAeCMwAAdCA4AwBAB4IzAAB0IDgDAEAHgjMAAHQgOAMAQAdT\nCs6llDeUUq4vpfxdKeW6UsrrNnPMfqWUG0spPy6l3FdK+bOpXJPuRkdH+y5hVjGeg2U8B8dYDpbx\nHCzjOTjGsn9TnXH+QpJv1Vr/IMmNSf5iM8e8nOR/qbW+O8kHkvzPpZR3TvG6dOAXbLCM52AZz8Ex\nloNlPAfLeA6OsezfVIPzR5N8dezrryY5Y9MDaq1P1FrvHvv6n5KsSrLvFK8LAADTaqrBee9a65NJ\nC8hJ9t7awaWUA5McluSOKV4XAACmVam1bv2AUm5I8qaNX0pSk/wfSf5HrXXeRsf+otb6xi2c57VJ\nRpP8X7XWb2zlelsvCAAABqDWWiZy/M4dTnjSlt4rpTxZSnlTrfXJUsqbkzy1heN2TrIkyUVbC81j\n15vQBwAAgOkw1VaNFUn++djXf5xkS6H4vye5v9b611O8HgAA9GKbrRpb/eZS5iW5LMn+SR5Ock6t\n9elSyluS/Nda62mllGOS3JzkvrQWj5rk39Rar51y9QAAME2mFJwBAGBH0dvOgaWUL4/1SN+70Wvb\n3FCFzdvSRjPGdOJKKa8qpdxRSvnh2Fh+cex1YzkFpZQ5pZS7Sikrxp4bz0kqpawppdwz9jO6cuw1\n4zkJpZTXlVIuL6WsGvv35/uN5eSUUg4a+5m8a+yfz5RS/sx4Tl4p5V+XUn5USrm3lHJxKWVX4zk5\npZQ/H/tv+pQyUp9bbn8lycmbvNZlQxU2b0sbzRjTCaq1vpTkuFrr4WnLJ55SSjkqxnKq/jzJ/Rs9\nN56TtyHJSK318FrrUWOvGc/J+eskV9daD05yaJLVMZaTUmt9YOxn8ogkRyZ5LsmyGM9JKaXsk+Rf\nJTmi1npI2oIO58V4Tlgp5d1J/iTJe9P+u35aKeXtmcRY9haca623JPnVJi9vc0MVNm8LG83sF2M6\nKbXW58e+fFXav6xqjOWklVL2S3Jqkv+20cvGc/JKfvff38ZzgkopeyT5o1rrV5Kk1vpyrfWZGMtB\nODHJP9RaH4nxnIqdkrxmbHWyuUkei/GcjIOT3FFrfanWuj7t3ruzkpyeCY5lnzPOmzOhDVXYvI02\nmrk9yZuM6cSNtRX8MMkTSW6otd4ZYzkV/zHJ/5b2PyCvMJ6TV5PcUEq5s5Typ2OvGc+Je1uSn5dS\nvjLWXnBBKWW3GMtBODfJ4rGvjeck1Fp/luQ/JPlpWmB+ptb6rRjPyfhRkj8aa83YLW0iZ/9MYiyH\nLThvyp2LEzS20cySJH8+NvO86Rga0w5qrRvGWjX2S3LU2F/zGMtJKKUsSPLk2N+IbG2dduPZ3TFj\nfx1+alpb1h/Fz+dk7JzkiCT/39h4Ppf2V7fGcgpKKbukzeRdPvaS8ZyEUsrr02aXD0iyT9rM8ydi\nPCes1ro6yV8muSHJ1Ul+mGT95g7d1rmGLTg/WUp5U5JsbUMVNm8LG80Y0ymotT6btuPl/BjLyTom\nyemllIeSfD3J8aWUi5I8YTwnp9b6+Ng/1yZZnuSo+PmcjEeTPFJr/f7Y86VpQdpYTs0pSX5Qa/35\n2HPjOTknJnmo1vrLsfaCZUk+GOM5KbXWr9Ra31trHUnydJK/yyTGsu/gXPLbM1BdN1Rh8za30Ywx\nnaBSyp6v3FlbSpmb5KS0nnFjOQm11n9Ta31rrfX3kixMcmOt9VNJrozxnLBSym5jf7OUUsprknwk\nbZ18P58TNPZXtI+UUg4ae+mEJD+OsZyq89L+J/kVxnNyfprk6FLKq0spJe3n8/4Yz0kppew19s+3\nJjkzrZVowmPZ2zrOpZTFSUaSvDHJk0m+mDZzcnk22VCllwJnmLKFjWaSrMxmNqnpq86ZoJTynrSb\nBOaMPS6ttf7fZQsb/vRX6cxTSvlwkv+11nq68ZycUsrb0maealqrwcW11n9vPCenlHJo2k2ruyR5\nKMln0m7IMpaTMNY/+nCS36u1/uPYa342J6m05VAXJlmX1l7wp0l2j/GcsFLKzUnmpY3lv661jk7m\nZ9MGKAAA0EHfrRoAADAjCM4AANCB4AwAAB0IzgAA0IHgDAAAHQjOAADQgeAMAAAd/P9QI7WB0uKb\nhQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(12, 8))\n", "ax1 = fig.add_subplot(111)\n", "ax1.scatter(age, chd)\n", "xx = np.linspace(age.min(), age.max(), 1000)\n", "ax1.plot(xx, logistic(h_theta(xx)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- $h_\\theta^L(x) = P(y = 1 | x; \\theta) = 0.5$인 데이터 x 찾기\n", " - 즉, $intercept + coef \\times x = 0$인 데이터 x 찾기\n", " - $x = - \\dfrac{intercept}{coef}$" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "49.1483851852\n" ] } ], "source": [ "print -1.0 * regr.intercept_[0] / regr.coef_[0][0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- $h_\\theta^L(x) = P(y = 1 | x; \\theta) = 0.5$을 직접 고려하여 x 찾기" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "49.1671671672\n" ] } ], "source": [ "xx = np.linspace(age.min(), age.max(), 1000)\n", "for x in xx:\n", " if abs(logistic(h_theta(x)) - 0.5000) < 0.0002:\n", " print x" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 즉, 나이가 49.16 세부터는 심장병이 존재할 확률이 0.5 이상이며 \"심장병 존재 가능자\"로 분류할 수 있다." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 나이가 50세, 60세, 70세, 80세일 때 심장병이 존재할 확률은?" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.508200244269\n", "0.603004707604\n", "0.690657986785\n", "0.766453692561\n" ] } ], "source": [ "print logistic(h_theta(50))\n", "print logistic(h_theta(60))\n", "print logistic(h_theta(70))\n", "print logistic(h_theta(80))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### - 로지스틱 분석 이해를 위한 데이터 변형" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 데이터를 조금 변경해보자.\n", " - 변경된 데이터에서는 40세 부터 100% 심장병이 존재한다." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Coefficients: [[ 0.07131931]]\n", "Intercept: [-2.25741509]\n" ] } ], "source": [ "age = np.array([22, 23, 24, 27, 28, 30, 30, 32, 33, 35, 38, 40, 41, 46, 47, 48, 49,\\\n", " 49, 50, 51, 51, 52, 54, 55, 58, 60, 60, 62, 65, 67, 71, 77, 81])\n", "chd2 = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n", "df2 = pd.DataFrame({'age': age, 'chd': chd2})\n", "regr2 = linear_model.LogisticRegression()\n", "\n", "age_ = []\n", "for i in age:\n", " age_.append((i,))\n", "regr2 = regr2.fit(age_, chd2)\n", "\n", "print 'Coefficients:', regr2.coef_\n", "print 'Intercept:', regr2.intercept_" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nf/xHM4f50EObXf7mrP23NAAjmqhVNQ5OcmWt9WWllO2T/LCUsnut9YF1nTx37tw/PB4YGMjAwMCE\nFAkwVdSaXHBB8pnPJPPnJ297W7NRyVZb9boygN4YHBzM4OBgR9foeFWNUsr+SebWWg8Zev7BJLXW\n+vFh5/x3ko/VWn869PzCJMfXWi9bx/WsqgEwRg89lHzzm01g3mij5Ljjkje+MZkxo9eVAfSXXq3j\nvCDJDqWUmUmWJXl9kjesdc7NSf4iyU9LKVsm2THJTV24NwBJVqxIPvvZ5POfT/bbr5maceCB1l4G\n6KaOg3Ot9bFSyjFJzk+zvN3JtdYlpZSjm7frSUk+muQrpZSrh77tA7XWuzu9N8B098tfJp/8ZPKt\nbyWve11y8cXJTjv1uiqAqckGKACT0IIFySc+kVx0UfL2tyfveley5Za9rgpg8rDlNsAUVmty3nnN\nJiW/+lXynvc0y8s9/ekjfy8AnROcAfrco482S8l94hPJxhsn739/csQRySab9LoygOlFcAboU7//\nfXLKKcnHP57ssEMzl/mgg3zgD6BXBGeAPvPAA8kXv5j8+78n++yTfPvbyf7797oqAARngD5xzz3J\niSeuWUruvPOSPfbodVUArLZRrwsAmO5WrEg+9KFk++2TG29slpT79reFZoB+IzgD9MhttyXvfW+z\n7vLddyeXXZZ85SvJC17Q68oAWBfBGWCC3X578u53J7NnN0vMXXNNs+Pfdtv1ujIANkRwBpggd9yR\nvO99yS67NCtjLF6cfOpTydZb97oyANoQnAHG2YoVyQc+0ATmRx9Nrr22CczPeU6vKwNgNARngHFy\n553JBz/YzFl+8MHkqquaFTO22qrXlQEwFoIzQJfdfXezSsZOOzVLzF15ZfLZzybbbNPrygDohOAM\n0CX33Zd85CPJjjsmy5cnl1+efOELybbb9royALpBcAbo0O9/38xZfv7zm3WY589PvvSlZNasXlcG\nQDfZORBgjFauTL72tWTu3GSvvZILLkh2263XVQEwXgRngFGqNTnzzOSf/inZcstml78XvajXVQEw\n3gRngFG44ILkH/8xeeyx5NOfTl7ximZNZgCmPsEZoIWf/zw54YTklluSj340+V//K9nIp0QAphV/\n7QNswI03Jq97XfLXf528/vXJokXJEUcIzQDTkb/6AdbhzjuT445L9t8/2Xvv5Be/SI46Ktlkk15X\nBkCvCM4Aw/z+98m//Vuy887NPObFi5s5zTNm9LoyAHrNHGeAJKtWJfPmNTv+7bNP8tOfNhuZAMBq\ngjMw7V10UfL+9zfTML75zeTP/7zXFQHQjwRnYNpavDj5wAeSJUuSj32s+RCgpeUAWB9znIFpZ8WK\n5O1vTwYGkr/4iyZAH3GE0AzAhgnOwLTxyCPJJz+Z7LJL82G/669P3v3u5MlP7nVlAEwGpmoAU16t\nyfe/n7zvfckOOyQ/+Unyghf0uioAJhvBGZjSFi9O3vOe5Ne/brbIPvTQXlcEwGRlqgYwJd19d/Ku\ndyUvfWnyylcmV18tNAPQGcEZmFJWrkxOPLGZirFqVbNixnHH2fEPgM6ZqgFMGeef30zLeO5zkwsv\nTHbbrdcVATCVCM7ApHfTTU1gXrQo+fd/Tw47zNJyAHSfqRrApPW73yVz5yb77pvst18TnA8/XGgG\nYHzoOAOTTq3JOec0azDvvXdy5ZXJttv2uioApjrBGZhUbryx+bDfL3+ZfPGLyUEH9boiAKYLUzWA\nSeGhh5J//udk//2bJeauvlpoBmBi6TgDfa3W5L/+q/nw3/77JwsXJtts0+uqAJiOBGegb91wQ3Ls\nsckttySnnpoceGCvKwJgOjNVA+g7Dz2UfOhDyQEHJK94RdNlFpoB6DUdZ6CvnHtucswxzfJyV1+d\nbLVVrysCgIbgDPSFW29tlpdbuNBqGQD0J1M1gJ5auTL5zGeSPfdMdtklueYaoRmA/qTjDPTM/PnJ\n29+e/PEfJ5dckuy0U68rAoD103EGJty99zbzmA8/PHnve5MLLxSaAeh/gjMwYWpNTjst2Xnn5NFH\nk0WLkr/5m6SUXlcGACMzVQOYEDfemLzzncmyZcnppzdLzQHAZKLjDIyrRx5JPvrRZte/gw5KLr9c\naAZgctJxBsbNz36WHHVUMmtWE5hnzux1RQAwdoIz0HX335+ccEIzJePTn06OOMI8ZgAmP1M1gK76\n7/9Odt212TZ70aLkyCOFZgCmBh1noCvuuCM59thmSsZXvpK87GW9rggAukvHGehIrckppyS77ZZs\nt12z85/QDMBUpOMMjNmNNyZHH91saHL++c222QAwVek4A6P26KPJv/5rs8Tcq16VXHqp0AzA1Kfj\nDIzKZZclb31rsuWWyYIFzfQMAJgOutJxLqUcUkq5rpRyQynl+PWcM1BKubKUcm0p5UfduC8wcR56\nKHnf+5oO8z/8Q/I//yM0AzC9dNxxLqVslOTEJC9PcluSBaWUs2qt1w0755lJPpvkFbXWW0spm3d6\nX2DiDA42Xeb99kuuvTbZYoteVwQAE68bUzXmJPlFrfXmJCmlnJbk8CTXDTvnjUnOqLXemiS11ju7\ncF9gnN1/f3L88cnZZyef/3zy6lf3uiIA6J1uTNXYOsktw57/Zui14XZMslkp5UellAWllL/twn2B\ncfSDHySzZyePPNJ0mYVmAKa7ifpw4MZJ9k7ysiRPS/KzUsrPaq03ruvkuXPn/uHxwMBABgYGJqBE\nIEl++9tmLvNFFyVf/nJy0EG9rggAOjc4OJjBwcGOrlFqrZ1doJT9k8yttR4y9PyDSWqt9ePDzjk+\nyVNqrR8Zev7lJOfVWs9Yx/VqpzUBY3P22cn/+T/Ja16TfOxjydOf3uuKAGB8lFJSay2j+Z5udJwX\nJNmhlDIzybIkr0/yhrXOOSvJf5ZSnpTkyUn2S/LJLtwb6II772y2y16wIJk3L3nJS3pdEQD0n47n\nONdaH0tyTJLzkyxKclqtdUkp5ehSytuGzrkuyQ+SXJ3k0iQn1VoXd3pvoDO1Jt/5TrNd9lZbJVdd\nJTQDwPp0PFWj20zVgIlx++3NtIzrrktOOaXZBRAApouxTNWw5TZMM7UmX/tasvvuyS67JFdeKTQD\nQBu23IZp5JZbkqOPTm67rVlubq+9el0RAEweOs4wDdSanHRSsvfeyQEHNB8CFJoBYHR0nGGKu+WW\n5C1vadZn/tGPmk1NAIDR03GGKarW5kN/e++dDAwkP/uZ0AwAndBxhino1luTo45qVs648MLmg4AA\nQGd0nGEKWb1ixl57NStl/PznQjMAdIuOM0wRy5Y1K2YsXWrFDAAYDzrOMMnV2myTveeeyR57JJdd\nJjQDwHjQcYZJ7I47kne8I7n++uT7309e+MJeVwQAU5eOM0xS3/lO02HeaafkiiuEZgAYbzrOMMms\nWJG8853JNdckZ52V7LdfrysCgOlBxxkmkTPPbFbJmDmz6TILzQAwcXScYRK4667k2GObrbLPOKPZ\nNhsAmFg6ztDnzj676TI/+9nJwoVCMwD0io4z9Knf/jZ597uTn/40+da3kpe8pNcVAcD0puMMfejc\nc5Pddkue8YzkqquEZgDoBzrO0EfuvTd573uTiy5Kvv715MADe10RALCajjP0ifPPb7rMm26aXH21\n0AwA/UbHGXrsgQeS97+/2fnv5JOTgw7qdUUAwLroOEMP/fjHzYoZDz/cbGgiNANA/9Jxhh743e+S\nE05ots3+4heTv/zLXlcEAIxExxkm2M9/nuy1V3L77c1cZqEZACYHHWeYIA8/nHzkI8kppyT/+Z/J\n617X64oAgNEQnGECXHll8nd/l2y/fbMu85Zb9roiAGC0TNWAcfToo8n//b/JwQc3K2eceabQDACT\nlY4zjJNFi5ou8+abJ1dckWyzTa8rAgA6oeMMXfbYY8knPpEMDCRHH52cd57QDABTgY4zdNEvfpG8\n+c3JJpsk8+cn223X64oAgG7RcYYuWLUqOfHE5EUvSo48MrnoIqEZAKYaHWfo0NKlyf/+382mJv/v\n/yU77tjrigCA8aDjDGNUa/LlLyf77tusmnHJJUIzAExlOs4wBrfemhx1VLP7349+lMye3euKAIDx\npuMMo1Br8o1vNFtm77dfs3220AwA04OOM7S0fHny9rcnN9zQLDG3zz69rggAmEg6ztDCGWcku+/e\nzGG+/HKhGQCmIx1n2IC7707e9a5kwYLke99rlpsDAKYnHWdYj+9/P9ltt2bL7IULhWYAmO50nGEt\n992XvOc9zSYm3/hGcuCBva4IAOgHOs4wzIUXNnOZn/Sk5OqrhWYAYA0dZ0jy4IPJ8ccnZ52VfOlL\nySGH9LoiAKDf6Dgz7f34x02X+b77mi6z0AwArIuOM9PWgw8mH/xgcuaZyRe+kLz61b2uCADoZzrO\nTEuru8z33JNcc43QDACMTMeZaeXBB5N//MdmQ5PPfz457LBeVwQATBY6zkwbF1+c7LFH8tvfNl1m\noRkAGA0dZ6a8Bx9MTjghOf10XWYAYOx0nJnSfvKTpst81126zABAZ3ScmZJWd5m/+92my3z44b2u\nCACY7HScmXJ+8pNkzz2TO+9susxCMwDQDTrOTBkPPdR0mb/zneRzn0te85peVwQATCU6zkwJl1zS\nzGVesaLpMgvNAEC36TgzqT30UPKhDyXf/rYuMwAwvnScmbRW7/53xx26zADA+OtKcC6lHFJKua6U\nckMp5fgNnLdvKeXRUspru3Ffpqf77kve8Y7kTW9KPvnJZN685FnP6nVVAMBU13FwLqVslOTEJAcn\n2TXJG0opL1jPef+a5Aed3pPp69xzk9mzk5Urk2uvtS4zADBxujHHeU6SX9Rab06SUsppSQ5Pct1a\n570ryelJ9u3CPZlm7rorefe7k5/+NDn11OTlL+91RQDAdNONqRpbJ7ll2PPfDL32B6WUrZK8ptb6\n+SSlC/dkmqi12cRk9uxmOsY11wjNAEBvTNSqGp9OMnzu8wbD89y5c//weGBgIAMDA+NSFP1t2bLk\nne9MlixJzjgjOeCAXlcEAExWg4ODGRwc7Ogapdba2QVK2T/J3FrrIUPPP5ik1lo/Puycm1Y/TLJ5\nkgeTvK3WevY6rlc7rYnJrdbkq19NPvCB5G1vS/7pn5KnPKXXVQEAU0kpJbXWUc2E6EbHeUGSHUop\nM5MsS/L6JG8YfkKt9U+HFXlqknPWFZrh5puTo49ulpj7wQ+SvfbqdUUAAI2O5zjXWh9LckyS85Ms\nSnJarXVJKeXoUsrb1vUtnd6TqWfVquTEE5N99kle+tJk/nyhGQDoLx1P1eg2UzWmnxtuSN7yliY8\nn3xy8oInLGYIANBdY5mqYedAeuaRR5J/+ZfmQ3+ve11y8cVCMwDQvyZqVQ14nEsvTY46Ktl22+Ty\ny5OZM3tdEQDAhgnOTKj77ktOOCE588zkU59KjjgiKVb2BgAmAVM1mDBnnZXsumvy8MPNdtlHHik0\nAwCTh44z4+6225J3vasJy1//emI/GwBgMtJxZtysWpV84QvJHnsku+ySXHWV0AwATF46zoyLxYub\nXf9WrUp+9KNk9uxeVwQA0BkdZ7rq4YeTD3+42cTkTW9KLrlEaAYApgYdZ7pmcDB5xzuatZgXLky2\n3rrXFQEAdI/gTMeWL0/+4R+a4PyZzyR/9Ve9rggAoPtM1WDMVq1KvvjFZirGlls285qFZgBgqtJx\nZkwWLmymZWy0UXLBBcnuu/e6IgCA8aXjzKjcf3/ynvckBx+cvPWtyU9+IjQDANOD4EwrtSann96s\nx3zvvcmiRclb3tJ0nAEApgNTNRjRTTclxxyT/PrXybx5yYtf3OuKAAAmnn4h6/Xww8lHP5rMmdOs\ny3zFFUIzADB96TizXieemMyfn1x2WTJrVq+rAQDorVJr7XUNj1NKqf1W03T12GPJk57U6yoAALqv\nlJJaaxnN95iqwXoJzQAAawjOAADQguAMAAAtCM4AANCC4AwAAC0IzgAA0ILgDAAALQjOAADQguAM\nAAAtCM4AANCC4AwAAC0IzgAA0ILgDAAALQjOAADQguAMAAAtCM4AANCC4AwAAC0IzgAA0ILgDAAA\nLQjOAADQguAMAAAtCM4AANCC4AwAAC0IzgAA0ILgDAAALQjOAADQguAMAAAtCM4AANCC4AwAAC0I\nzgAA0ILLjK5vAAAMiUlEQVTgDAAALQjOAADQguAMAAAtCM4AANCC4AwAAC0IzgAA0ILgDAAALXQl\nOJdSDimlXFdKuaGUcvw63n9jKeWqoeOSUspu3bgvAABMlFJr7ewCpWyU5IYkL09yW5IFSV5fa71u\n2Dn7J1lSa723lHJIkrm11v3Xc73aaU0AALAhpZTUWstovqcbHec5SX5Ra7251vpoktOSHD78hFrr\npbXWe4eeXppk6y7cFwAAJkw3gvPWSW4Z9vw32XAwfmuS87pwXwAAmDAbT+TNSikHJvn7JH++ofPm\nzp37h8cDAwMZGBgY17oAAJjaBgcHMzg42NE1ujHHef80c5YPGXr+wSS11vrxtc7bPckZSQ6ptf5y\nA9czxxkAgHHVqznOC5LsUEqZWUrZNMnrk5y9VmHbpgnNf7uh0AwAAP2q46katdbHSinHJDk/TRA/\nuda6pJRydPN2PSnJPyfZLMnnSiklyaO11jmd3hsAACZKx1M1us1UDQAAxluvpmoAAMCUJzgDAEAL\ngjMAALQgOAMAQAuCMwAAtCA4AwBAC4IzAAC0IDgDAEALgjMAALQgOAMAQAuCMwAAtCA4AwBAC4Iz\nAAC0IDgDAEALgjMAALQgOAMAQAuCMwAAtCA4AwBAC4IzAAC0IDgDAEALgjMAALQgOAMAQAuCMwAA\ntCA4AwBAC4IzAAC0IDgDAEALgjMAALQgOAMAQAuCMwAAtCA4AwBAC4IzAAC0IDgDAEALgjMAALQg\nOAMAQAuCMwAAtCA4AwBAC4IzAAC0IDgDAEALgjMAALQgOAMAQAuCMwAAtCA4AwBAC4IzAAC0IDgD\nAEALgjMAALQgOAMAQAuCMwAAtCA4AwBAC4IzAAC0IDgDAEALgjMAALQgOAMAQAuCMwAAtCA4AwBA\nC4IzAAC00JXgXEo5pJRyXSnlhlLK8es55z9KKb8opSwspezZjfsCAMBE6Tg4l1I2SnJikoOT7Jrk\nDaWUF6x1zqFJtq+1Pj/J0Um+0Ol9GX8rVqzIggULsmLFijG93/acTnWjzpEsWbIkX/3qV7NkyZIx\nX2Mi6uyH8Z6oawDAhKu1dnQk2T/JecOefzDJ8Wud84UkRw57viTJluu5XqX35s07rc6YsVl95jP3\nrjNmbFbnzTttVO+3Pacf6hzJMcccV5MZNdmxJjPqMccc25d19sN490udADCSocw5utw72m94wgWS\nv05y0rDnf5PkP9Y655wkBwx7fkGSvddzvXEbINpZvnx5nTFjs5pcVZNak6vqjBmb1eXLl7d6v+05\n/VDnSBYvXjwUmtdcI5lRFy9e3Fd19sN490udANDGWILzxhPR1R6tuXPn/uHxwMBABgYGelbLdLR0\n6dJsuums/O53uw+9sns22WRmli5dmi222GLE99tco1/qHMn8+fOTPC/Jmmsk22T+/PnZeeed+6bO\nfhjvfqkTANZlcHAwg4ODHV2jG8H51iTbDnu+zdBra5/zvBHO+YPhwZmJN2vWrDzyyNIkV6cJilfn\n0UdvzqxZs1q93/acfqhzJHPmzElyy+Oukfxm6PX+qbMfxrtf6gSAdVm7GfuRj3xk9BcZbYt67SPJ\nk5LcmGRmkk2TLEyy81rnvDLJ9+uaOdGXbuB649iUp63V81Cf8Yy9Njgnd33vtz2nH+ocyTHHHDs0\nXeP5Hc9xHs86+2G8+6VOABhJxjBVozTf15lSyiFJPpNmlY6Ta63/Wko5eqigk4bOOTHJIUkeTPL3\ntdYr1nOt2o2a6NyKFSuydOnSzJo1a53/jD7S+23P6Yc6R7JkyZLMnz8/c+bMaT1Foxd19sN4T9Q1\nAKATpZTUWsuovqffQqrgDADAeBtLcLZzIAAAtCA4AwBAC4IzAAC0IDgDAEALgjMAALQgOAMAQAuC\nMwAAtCA4AwBAC4IzAAC0IDgDAEALgjMAALQgOAMAQAuCMwAAtCA4AwBAC4IzAAC0IDgDAEALgjMA\nALQgOAMAQAuCMwAAtCA4AwBAC4IzAAC0IDgDAEALgjMAALQgOAMAQAuCMwAAtCA4AwBAC4IzAAC0\nIDgDAEALgjMAALQgOAMAQAuCMwAAtCA4AwBAC4IzAAC0IDgDAEALgjMAALQgOAMAQAuCMwAAtCA4\nAwBAC4IzAAC0IDgDAEALgjMAALQgOAMAQAuCMwAAtCA4AwBAC4IzAAC0IDgDAEALgjMAALQgOAMA\nQAuCMwAAtCA4AwBAC4IzAAC0IDgDAEALgjMAALQgOAMAQAuCMwAAtNBRcC6l/Ekp5fxSyvWllB+U\nUp65jnO2KaVcVEpZVEq5ppRybCf3pL3BwcFelzClGM/uMp7dYyy7y3h2l/HsHmPZe512nD+Y5IJa\n605JLkryj+s4Z2WS99Zad03yoiTvLKW8oMP70oI/YN1lPLvLeHaPsewu49ldxrN7jGXvdRqcD0/y\n1aHHX03ymrVPqLXeXmtdOPT4gSRLkmzd4X0BAGBCdRqcn11rvSNpAnKSZ2/o5FLKrCR7Jvl5h/cF\nAIAJVWqtGz6hlB8m2XL4S0lqkn9K8pVa62bDzr2r1vqs9Vznj5IMJvn/aq1nbeB+Gy4IAAC6oNZa\nRnP+xi0ueND63iul3FFK2bLWekcp5TlJlq/nvI2TnJ7k6xsKzUP3G9UPAAAAE6HTqRpnJ3nz0OO/\nS7K+UHxKksW11s90eD8AAOiJEadqbPCbS9ksyXeSPC/JzUmOqLXeU0p5bpIv1Vr/spTyZ0kuTnJN\nmikeNckJtdb/6bh6AACYIB0FZwAAmC56tnNgKeXkoTnSVw97bcQNVVi39W00Y0xHr5Ty5FLKz0sp\nVw6N5YeHXjeWHSilbFRKuaKUcvbQc+M5RqWUpaWUq4Z+R+cPvWY8x6CU8sxSyndLKUuG/v7cz1iO\nTSllx6HfySuGvt5bSjnWeI5dKeU9pZRrSylXl1K+WUrZ1HiOTSnluKH/pneUkXq55fapSQ5e67U2\nG6qwbuvbaMaYjlKt9eEkB9Za90qzfOKhpZQ5MZadOi7J4mHPjefYrUoyUGvdq9Y6Z+g14zk2n0ly\nbq115yR7JLkuxnJMaq03DP1O7p1knyQPJvlejOeYlFK2SvKuJHvXWndPs6DDG2I8R62UsmuStyR5\nYZr/rv9lKWX7jGEsexaca62XJPntWi+PuKEK67aejWa2iTEdk1rrQ0MPn5zmL6saYzlmpZRtkrwy\nyZeHvWw8x67kiX9/G89RKqU8I8mLa62nJkmtdWWt9d4Yy274iyS/rLXeEuPZiScledrQ6mQzktwa\n4zkWOyf5ea314VrrY2k+e/faJIdllGPZy47zuoxqQxXWbdhGM5cm2dKYjt7QtIIrk9ye5Ie11gUx\nlp34VJL3p/kfkNWM59jVJD8spSwopbx16DXjOXrbJbmzlHLq0PSCk0opT42x7IYjk8wbemw8x6DW\neluSf0/y6zSB+d5a6wUxnmNxbZIXD03NeGqaRs7zMoax7LfgvDafXByloY1mTk9y3FDnee0xNKYt\n1FpXDU3V2CbJnKF/5jGWY1BKeVWSO4b+RWRD67Qbz/b+bOifw1+ZZlrWi+P3cyw2TrJ3ks8OjeeD\naf7p1lh2oJSySZpO3neHXjKeY1BK+eM03eWZSbZK03l+U4znqNVar0vy8SQ/THJukiuTPLauU0e6\nVr8F5ztKKVsmyYY2VGHd1rPRjDHtQK31vjQ7Xh4SYzlWf5bksFLKTUm+leRlpZSvJ7ndeI5NrXXZ\n0NcVSf4ryZz4/RyL3yS5pdZ62dDzM9IEaWPZmUOTXF5rvXPoufEcm79IclOt9e6h6QXfS3JAjOeY\n1FpPrbW+sNY6kOSeJNdnDGPZ6+Bc8vgOVNsNVVi3dW00Y0xHqZSy+epP1pZSZiQ5KM2ccWM5BrXW\nE2qt29Za/zTJ65NcVGv92yTnxHiOWinlqUP/spRSytOSvCLNOvl+P0dp6J9obyml7Dj00suTLIqx\n7NQb0vxP8mrGc2x+nWT/UspTSiklze/n4hjPMSmlbDH0ddskf5VmKtGox7Jn6ziXUuYlGUjyrCR3\nJPlwms7Jd7PWhio9KXCSKevZaCbJ/Kxjk5pe1TkZlFJ2S/MhgY2Gjm/XWv+lrGfDn95VOvmUUl6a\n5H211sOM59iUUrZL03mqaaYafLPW+q/Gc2xKKXuk+dDqJkluSvL3aT6QZSzHYGj+6M1J/rTWev/Q\na343x6g0y6G+PsmjaaYXvDXJ02M8R62UcnGSzdKM5XtqrYNj+d20AQoAALTQ66kaAAAwKQjOAADQ\nguAMAAAtCM4AANCC4AwAAC0IzgAA0ILgDAAALfz/jknacdiGO5sAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def h_theta(x):\n", " return regr2.intercept_[0] + regr2.coef_[0][0] * x\n", "\n", "fig2 = plt.figure(figsize=(12, 8))\n", "ax2 = fig2.add_subplot(111)\n", "ax2.scatter(age, chd2)\n", "xx2 = np.linspace(age.min(), age.max(), 1000)\n", "ax2.plot(xx2, logistic(h_theta(xx2)))" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "31.6522293282\n" ] } ], "source": [ "print -1.0 * regr2.intercept_[0] / regr2.coef_[0][0]\n", "xx2 = np.linspace(age.min(), age.max(), 1000)\n", "for x in xx2:\n", " if abs(logistic(h_theta(x)) - 0.5000) < 0.0002:\n", " print x" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 나이가 31.65 세부터는 심장병이 존재할 확률이 0.5 이상이며 \"심장병 존재 가능자\"로 분류할 수 있다." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 나이가 50세, 60세, 70세, 80세일 때 심장병이 존재할 확률은?" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.787270468923\n", "0.883061158965\n", "0.939056959384\n", "0.969175310841\n" ] } ], "source": [ "print logistic(h_theta(50))\n", "print logistic(h_theta(60))\n", "print logistic(h_theta(70))\n", "print logistic(h_theta(80))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Multivariate Logistic Regression (다변수 로지스틱 회귀분석)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1) Mushroom Data Set 로드 및 scikit을 활용하기 위한 데이터 가공¶" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Data Set 로드\n", " - 21개의 Features (예측 변수)\n", " - 2개의 분류 (타겟 변수, outcomes)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import urllib2\n", "path = 'http://ftp.ics.uci.edu/pub/machine-learning-databases/mushroom/agaricus-lepiota.data'\n", "raw_csv = urllib2.urlopen(path)\n", "col_names = range(23)\n", "df = pd.read_csv(raw_csv, names = col_names)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 수치형 데이터로 변경" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...13141516171819202122
00000000000...0000000000
11001010010...0000000111
21102020011...0000000112
30012000001...0000000000
41003130110...0000001121
51011010011...0000000011
61102010012...0000000012
71112020011...0000000102
80012000003...0000000031
91101010012...0000000002
101011020012...0000000111
111011010011...0000000002
121101010014...0000000101
130012000000...0000000130
141020130111...1000001021
151223130000...0000000140
161322130110...0000001121
170000000001...0000000001
180012000001...0000000100
190000000000...0000000100
201101010010...0000000102
210010000001...0000000131
221111020010...0000000102
231112010014...0000000112
241102020012...0000000002
250302000001...0000000131
261011010011...0000000112
271012020014...0000000112
281320130000...0000000040
291001010101...0000000133
..................................................................
80941103130112...0000010411
809500181800110...2780024453
80961422130114...0000010411
80970410170008...3210001436
80980404160008...3010001433
80991422130114...3000010401
810013001310111...0670100836
81010404170008...0200001434
810210001310110...0670100156
810314001310110...0670100656
810414001310110...0670200136
810514001310110...0670100736
810614001310111...0670200136
810710001310110...0670200156
81080414160008...0200001436
81091102130114...0000010411
811010001310111...0670200136
81111402130113...0000010411
811214001310111...0670100836
81130414160008...3210001433
811403181810110...2780024453
811510001310110...0670200636
81160410170008...3200001436
81170404160008...0200001433
81180410140008...0200001433
811914001310110...0670200856
812010001310110...0670100836
81211300131011...0670200856
81220410160008...3000001436
812310001310110...0670200656
\n", "

8124 rows × 23 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 7 8 9 ... 13 14 15 16 17 18 19 \\\n", "0 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 \n", "1 1 0 0 1 0 1 0 0 1 0 ... 0 0 0 0 0 0 0 \n", "2 1 1 0 2 0 2 0 0 1 1 ... 0 0 0 0 0 0 0 \n", "3 0 0 1 2 0 0 0 0 0 1 ... 0 0 0 0 0 0 0 \n", "4 1 0 0 3 1 3 0 1 1 0 ... 0 0 0 0 0 0 1 \n", "5 1 0 1 1 0 1 0 0 1 1 ... 0 0 0 0 0 0 0 \n", "6 1 1 0 2 0 1 0 0 1 2 ... 0 0 0 0 0 0 0 \n", "7 1 1 1 2 0 2 0 0 1 1 ... 0 0 0 0 0 0 0 \n", "8 0 0 1 2 0 0 0 0 0 3 ... 0 0 0 0 0 0 0 \n", "9 1 1 0 1 0 1 0 0 1 2 ... 0 0 0 0 0 0 0 \n", "10 1 0 1 1 0 2 0 0 1 2 ... 0 0 0 0 0 0 0 \n", "11 1 0 1 1 0 1 0 0 1 1 ... 0 0 0 0 0 0 0 \n", "12 1 1 0 1 0 1 0 0 1 4 ... 0 0 0 0 0 0 0 \n", "13 0 0 1 2 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 \n", "14 1 0 2 0 1 3 0 1 1 1 ... 1 0 0 0 0 0 1 \n", "15 1 2 2 3 1 3 0 0 0 0 ... 0 0 0 0 0 0 0 \n", "16 1 3 2 2 1 3 0 1 1 0 ... 0 0 0 0 0 0 1 \n", "17 0 0 0 0 0 0 0 0 0 1 ... 0 0 0 0 0 0 0 \n", "18 0 0 1 2 0 0 0 0 0 1 ... 0 0 0 0 0 0 0 \n", "19 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 \n", "20 1 1 0 1 0 1 0 0 1 0 ... 0 0 0 0 0 0 0 \n", "21 0 0 1 0 0 0 0 0 0 1 ... 0 0 0 0 0 0 0 \n", "22 1 1 1 1 0 2 0 0 1 0 ... 0 0 0 0 0 0 0 \n", "23 1 1 1 2 0 1 0 0 1 4 ... 0 0 0 0 0 0 0 \n", "24 1 1 0 2 0 2 0 0 1 2 ... 0 0 0 0 0 0 0 \n", "25 0 3 0 2 0 0 0 0 0 1 ... 0 0 0 0 0 0 0 \n", "26 1 0 1 1 0 1 0 0 1 1 ... 0 0 0 0 0 0 0 \n", "27 1 0 1 2 0 2 0 0 1 4 ... 0 0 0 0 0 0 0 \n", "28 1 3 2 0 1 3 0 0 0 0 ... 0 0 0 0 0 0 0 \n", "29 1 0 0 1 0 1 0 1 0 1 ... 0 0 0 0 0 0 0 \n", "... .. .. .. .. .. .. .. .. .. .. ... .. .. .. .. .. .. .. \n", "8094 1 1 0 3 1 3 0 1 1 2 ... 0 0 0 0 0 1 0 \n", "8095 0 0 1 8 1 8 0 0 1 10 ... 2 7 8 0 0 2 4 \n", "8096 1 4 2 2 1 3 0 1 1 4 ... 0 0 0 0 0 1 0 \n", "8097 0 4 1 0 1 7 0 0 0 8 ... 3 2 1 0 0 0 1 \n", "8098 0 4 0 4 1 6 0 0 0 8 ... 3 0 1 0 0 0 1 \n", "8099 1 4 2 2 1 3 0 1 1 4 ... 3 0 0 0 0 1 0 \n", "8100 1 3 0 0 1 3 1 0 1 11 ... 0 6 7 0 1 0 0 \n", "8101 0 4 0 4 1 7 0 0 0 8 ... 0 2 0 0 0 0 1 \n", "8102 1 0 0 0 1 3 1 0 1 10 ... 0 6 7 0 1 0 0 \n", "8103 1 4 0 0 1 3 1 0 1 10 ... 0 6 7 0 1 0 0 \n", "8104 1 4 0 0 1 3 1 0 1 10 ... 0 6 7 0 2 0 0 \n", "8105 1 4 0 0 1 3 1 0 1 10 ... 0 6 7 0 1 0 0 \n", "8106 1 4 0 0 1 3 1 0 1 11 ... 0 6 7 0 2 0 0 \n", "8107 1 0 0 0 1 3 1 0 1 10 ... 0 6 7 0 2 0 0 \n", "8108 0 4 1 4 1 6 0 0 0 8 ... 0 2 0 0 0 0 1 \n", "8109 1 1 0 2 1 3 0 1 1 4 ... 0 0 0 0 0 1 0 \n", "8110 1 0 0 0 1 3 1 0 1 11 ... 0 6 7 0 2 0 0 \n", "8111 1 4 0 2 1 3 0 1 1 3 ... 0 0 0 0 0 1 0 \n", "8112 1 4 0 0 1 3 1 0 1 11 ... 0 6 7 0 1 0 0 \n", "8113 0 4 1 4 1 6 0 0 0 8 ... 3 2 1 0 0 0 1 \n", "8114 0 3 1 8 1 8 1 0 1 10 ... 2 7 8 0 0 2 4 \n", "8115 1 0 0 0 1 3 1 0 1 10 ... 0 6 7 0 2 0 0 \n", "8116 0 4 1 0 1 7 0 0 0 8 ... 3 2 0 0 0 0 1 \n", "8117 0 4 0 4 1 6 0 0 0 8 ... 0 2 0 0 0 0 1 \n", "8118 0 4 1 0 1 4 0 0 0 8 ... 0 2 0 0 0 0 1 \n", "8119 1 4 0 0 1 3 1 0 1 10 ... 0 6 7 0 2 0 0 \n", "8120 1 0 0 0 1 3 1 0 1 10 ... 0 6 7 0 1 0 0 \n", "8121 1 3 0 0 1 3 1 0 1 1 ... 0 6 7 0 2 0 0 \n", "8122 0 4 1 0 1 6 0 0 0 8 ... 3 0 0 0 0 0 1 \n", "8123 1 0 0 0 1 3 1 0 1 10 ... 0 6 7 0 2 0 0 \n", "\n", " 20 21 22 \n", "0 0 0 0 \n", "1 1 1 1 \n", "2 1 1 2 \n", "3 0 0 0 \n", "4 1 2 1 \n", "5 0 1 1 \n", "6 0 1 2 \n", "7 1 0 2 \n", "8 0 3 1 \n", "9 0 0 2 \n", "10 1 1 1 \n", "11 0 0 2 \n", "12 1 0 1 \n", "13 1 3 0 \n", "14 0 2 1 \n", "15 1 4 0 \n", "16 1 2 1 \n", "17 0 0 1 \n", "18 1 0 0 \n", "19 1 0 0 \n", "20 1 0 2 \n", "21 1 3 1 \n", "22 1 0 2 \n", "23 1 1 2 \n", "24 0 0 2 \n", "25 1 3 1 \n", "26 1 1 2 \n", "27 1 1 2 \n", "28 0 4 0 \n", "29 1 3 3 \n", "... .. .. .. \n", "8094 4 1 1 \n", "8095 4 5 3 \n", "8096 4 1 1 \n", "8097 4 3 6 \n", "8098 4 3 3 \n", "8099 4 0 1 \n", "8100 8 3 6 \n", "8101 4 3 4 \n", "8102 1 5 6 \n", "8103 6 5 6 \n", "8104 1 3 6 \n", "8105 7 3 6 \n", "8106 1 3 6 \n", "8107 1 5 6 \n", "8108 4 3 6 \n", "8109 4 1 1 \n", "8110 1 3 6 \n", "8111 4 1 1 \n", "8112 8 3 6 \n", "8113 4 3 3 \n", "8114 4 5 3 \n", "8115 6 3 6 \n", "8116 4 3 6 \n", "8117 4 3 3 \n", "8118 4 3 3 \n", "8119 8 5 6 \n", "8120 8 3 6 \n", "8121 8 5 6 \n", "8122 4 3 6 \n", "8123 6 5 6 \n", "\n", "[8124 rows x 23 columns]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "map_dic = {}\n", "num_columns = df.shape[1]\n", "for i in range(num_columns):\n", " unique_array = df[i].unique()\n", " map_dic_sub = {}\n", " for j in range(len(unique_array)):\n", " map_dic_sub[unique_array[j]] = j\n", " df[i] = df[i].map(map_dic_sub)\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 예측 변수와 타겟 변수의 분리" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[0, 0, 0, ..., 0, 0, 0],\n", " [0, 0, 1, ..., 0, 1, 1],\n", " [1, 0, 2, ..., 0, 1, 1],\n", " ..., \n", " [3, 0, 0, ..., 0, 8, 5],\n", " [4, 1, 0, ..., 1, 4, 3],\n", " [0, 0, 0, ..., 0, 6, 5]])" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "attributes = df.iloc[:, 1:22]\n", "mushroom_data = attributes.values\n", "mushroom_data" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([0, 1, 1, ..., 1, 0, 1])" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "target_series = df.iloc[:, 0]\n", "mushroom_target = target_series.values\n", "mushroom_target" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- train data와 test data의 분리 샘플 코드" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0 1]\n", " [2 3]\n", " [4 5]\n", " [6 7]\n", " [8 9]]\n", "[0, 1, 2, 3, 4]\n", "\n", "[[2 3]\n", " [0 1]\n", " [6 7]\n", " [8 9]] [1, 0, 3, 4]\n", "[[4 5]] [2]\n" ] } ], "source": [ "from sklearn.cross_validation import train_test_split\n", "\n", "data, labels = np.arange(10).reshape((5, 2)), range(5)\n", "print data\n", "print labels\n", "\n", "print \n", "\n", "data_train, data_test, labels_train, labels_test = train_test_split(data, labels, test_size=0.20)\n", "print data_train, labels_train \n", "print data_test, labels_test" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- mushroom 데이터에 대한 train data와 test data의 분리" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "6499 6499\n", "1625 1625\n" ] } ], "source": [ "data_train, data_test, labels_train, labels_test = train_test_split(mushroom_data, mushroom_target, test_size=0.20)\n", "print len(data_train), len(labels_train) \n", "print len(data_test), len(labels_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2) scikit을 활용한 로지스틱 회귀분석¶" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", " intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n", " penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n", " verbose=0, warm_start=False)" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "regr3 = linear_model.LogisticRegression()\n", "regr3.fit(data_train, labels_train)" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Coefficients: [[ 0.04030487 1.17110534 0.03021184 8.46849072 -3.0813763 0.33461377\n", " 3.23485394 9.85864101 -0.33056911 1.70857447 2.0504694 -2.20960252\n", " -2.39936225 -0.66134385 0.7534827 0. 0.46046821 2.92733412\n", " 0.12170563 -1.47497958 0.66568998]]\n", "Intercept: [-2.32896608]\n" ] } ], "source": [ "print 'Coefficients:', regr3.coef_\n", "print 'Intercept:', regr3.intercept_" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0 0 2 0 2 0 1 0 3 1 2 0 0 0 0 0 0 0 0 2 3]\n", "[[0 0 2 0 2 0 1 0 3 1 2 0 0 0 0 0 0 0 0 2 3]]\n" ] } ], "source": [ "print data_test[0]\n", "print data_test[0].reshape(1, -1)" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0 0 2 0 2 0 1 0 3 1 2 0 0 0 0 0 0 0 0 2 3] : 1\n", "0\n" ] } ], "source": [ "print data_test[0], \":\", labels_test[0]\n", "print regr3.predict(data_test[0].reshape(1,-1))[0]" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0 0 4 1 4 0 0 0 8 1 4 0 0 0 0 0 0 0 1 4 3] : 0\n", "0\n" ] } ], "source": [ "print data_test[1], \":\", labels_test[1]\n", "print regr3.predict(data_test[1].reshape(1,-1))[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 로지스틱 회귀분석에 의한 분류 정확도" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.983384615385\n" ] } ], "source": [ "predicted = []\n", "for i in range(0, len(data_test)):\n", " predicted.append(regr3.predict(data_test[i].reshape(1,-1))[0] == labels_test[i])\n", "\n", "total = len(predicted)\n", "numTrue = 0\n", "for i in range(0, total):\n", " if predicted[i]:\n", " numTrue = numTrue + 1\n", "print float(numTrue) / total " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. Iris Data Set 로드 및 scikit 활용 (Multiclass Classification)\n", "- [reference] Stanford's machine learning course presented by Professor Andrew Ng\n", "- 4개의 Features (예측 변수)\n", "- ***3개의 분류 (타겟 변수, outcomes)***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![Multiclass](./figures/multi-class-logistic-regression.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 훈련 데이터를 다음과 같이 3개의 Binary Logistic Regression 분류 문제로 변경한다. \n", " - Triangle (1) vs crosses and squares (0) \n", " - $h_\\theta^{L1}(X) = P(y=1 | X; \\theta)$\n", " - Crosses (1) vs triangle and square (0) \n", " - $h_\\theta^{L2}(X) = P(y=1 | X; \\theta)$\n", " - Square (1) vs crosses and square (0) \n", " - $h_\\theta^{L2}(X) = P(y=1 | X; \\theta)$ \n", " \n", " \n", "- 분류하려는 타킷 변수가 $k$개 이면 총 $k$개의 Binary Logistic Regression 분류 문제로 변경하여 해결한다." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![Multiclass](./figures/multi-class-logistic-regression2.png)" ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn.datasets import load_iris\n", "from sklearn import tree\n", "iris = load_iris()" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['target_names', 'data', 'target', 'DESCR', 'feature_names']" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "iris.keys()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 아래와 같이 분류 종류가 3가지이다." ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array(['setosa', 'versicolor', 'virginica'], \n", " dtype='|S10')" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "iris.target_names" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['sepal length (cm)',\n", " 'sepal width (cm)',\n", " 'petal length (cm)',\n", " 'petal width (cm)']" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "iris.feature_names" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "150 150\n" ] } ], "source": [ "print len(iris.data), len(iris.target)" ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[ 5.1, 3.5, 1.4, 0.2],\n", " [ 4.9, 3. , 1.4, 0.2],\n", " [ 4.7, 3.2, 1.3, 0.2],\n", " [ 4.6, 3.1, 1.5, 0.2],\n", " [ 5. , 3.6, 1.4, 0.2]])" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "iris.data[0:5]" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([0, 0, 0, 0, 0])" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "iris.target[0:5]" ] }, { "cell_type": "code", "execution_count": 71, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[ 7. , 3.2, 4.7, 1.4],\n", " [ 6.4, 3.2, 4.5, 1.5],\n", " [ 6.9, 3.1, 4.9, 1.5],\n", " [ 5.5, 2.3, 4. , 1.3],\n", " [ 6.5, 2.8, 4.6, 1.5]])" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "iris.data[50:55]" ] }, { "cell_type": "code", "execution_count": 72, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([1, 1, 1, 1, 1])" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "iris.target[50:55]" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", " intercept_scaling=1, max_iter=100, multi_class='ovr',\n", " penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n", " verbose=0)" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "regr5 = linear_model.LogisticRegression()\n", "regr5.fit(iris.data[:, :2], iris.target)" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Coefficients: [[-2.49579289 4.01011301]\n", " [ 0.49709451 -1.63380222]\n", " [ 1.15921404 -1.77736568]]\n", "Intercept: [ 0.81713932 1.22543562 -2.22516119]\n" ] } ], "source": [ "print 'Coefficients:', regr5.coef_\n", "print 'Intercept:', regr5.intercept_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 두 개의 속성에 대해서만 Logistic Regression 수행\n", " - http://scikit-learn.org/stable/auto_examples/linear_model/plot_iris_logistic.html" ] }, { "cell_type": "code", "execution_count": 80, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "iris = load_iris()\n", "X = iris.data[:, :2] # we only take the first two features.\n", "Y = iris.target\n", "\n", "h = .02 # step size in the mesh\n", "\n", "regr6 = linear_model.LogisticRegression()\n", "\n", "# we create an instance of Neighbours Classifier and fit the data.\n", "regr6.fit(X, Y)\n", "\n", "# Plot the decision boundary. For that, we will assign a color to each\n", "# point in the mesh [x_min, m_max]x[y_min, y_max].\n", "x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5\n", "y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5\n", "x_array = np.arange(x_min - .5, x_max + .5, h)\n", "y_array = np.arange(y_min - .5, y_max + .5, h)\n", "xx, yy = np.meshgrid(x_array, y_array)\n", "Z = regr6.predict(np.c_[xx.ravel(), yy.ravel()])\n", "\n", "# Put the result into a color plot\n", "Z = Z.reshape(xx.shape)\n", "fig = plt.figure(figsize=(10, 8))\n", "ax = fig.add_subplot(111)\n", "ax.pcolormesh(xx, yy, Z, cmap=plt.cm.Paired)\n", "\n", "# Plot also the training points\n", "ax.scatter(X[:, 0], X[:, 1], c=Y, edgecolors='k', cmap=plt.cm.Paired)\n", "plt.xlabel('Sepal length')\n", "plt.ylabel('Sepal width')" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [Root]", "language": "python", "name": "Python [Root]" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.12" } }, "nbformat": 4, "nbformat_minor": 0 }