{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "OoasdhSAp0zJ" }, "source": [ "##### Copyright 2019 The TensorFlow Authors." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "cellView": "form", "execution": { "iopub.execute_input": "2022-12-14T22:33:25.094779Z", "iopub.status.busy": "2022-12-14T22:33:25.094036Z", "iopub.status.idle": "2022-12-14T22:33:25.098337Z", "shell.execute_reply": "2022-12-14T22:33:25.097745Z" }, "id": "cIrwotvGqsYh" }, "outputs": [], "source": [ "#@title Licensed under the Apache License, Version 2.0 (the \"License\");\n", "# you may not use this file except in compliance with the License.\n", "# You may obtain a copy of the License at\n", "#\n", "# https://www.apache.org/licenses/LICENSE-2.0\n", "#\n", "# Unless required by applicable law or agreed to in writing, software\n", "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", "# See the License for the specific language governing permissions and\n", "# limitations under the License.\n" ] }, { "cell_type": "markdown", "metadata": { "id": "C81KT2D_j-xR" }, "source": [ "# 추정기(Estimator)로 선형 모델 만들기\n", "\n", "\n", " \n", " \n", " \n", " \n", "
TensorFlow.org에서 보기Google Colab에서 실행하기GitHub에서 소스 보기노트북 다운로드하기
" ] }, { "cell_type": "markdown", "metadata": { "id": "JOccPOFMm5Tc" }, "source": [ "> 경고: Estimator는 새 코드에 권장되지 않습니다. Estimator는 `v1.Session` 스타일 코드를 실행하며, 이 코드는 올바르게 작성하기가 좀 더 어렵고 특히 TF 2 코드와 결합할 경우 예기치 않게 작동할 수 있습니다. Estimator는 [호환성 보장](https://tensorflow.org/guide/versions)이 적용되지만 보안 취약점 외에는 수정 사항이 제공되지 않습니다. 자세한 내용은 [마이그레이션 가이드](https://tensorflow.org/guide/migrate)를 참조하세요." ] }, { "cell_type": "markdown", "metadata": { "id": "tUP8LMdYtWPz" }, "source": [ "## 개요\n", "\n", "Note: 이 문서는 텐서플로 커뮤니티에서 번역했습니다. 커뮤니티 번역 활동의 특성상 정확한 번역과 최신 내용을 반영하기 위해 노력함에도 불구하고 [공식 영문 문서](https://www.tensorflow.org/?hl=en)의 내용과 일치하지 않을 수 있습니다. 이 번역에 개선할 부분이 있다면 [tensorflow/docs-l10n](https://github.com/tensorflow/docs-l10n/) 깃헙 저장소로 풀 리퀘스트를 보내주시기 바랍니다. 문서 번역이나 리뷰에 참여하려면 [docs-ko@tensorflow.org](https://groups.google.com/a/tensorflow.org/forum/#!forum/docs-ko)로 메일을 보내주시기 바랍니다.\n", "\n", "참고: Keras 로지스틱 회귀 예제를 [사용할 수](https://tensorflow.org/guide/migrate/tutorials/keras/regression) 있으며 이 튜토리얼보다 권장됩니다.\n" ] }, { "cell_type": "markdown", "metadata": { "id": "vkC_j6VpqrDw" }, "source": [ "## 설정" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:25.102402Z", "iopub.status.busy": "2022-12-14T22:33:25.101878Z", "iopub.status.idle": "2022-12-14T22:33:27.663009Z", "shell.execute_reply": "2022-12-14T22:33:27.662093Z" }, "id": "rutbJGmpqvm3" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting sklearn\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Downloading sklearn-0.0.post1.tar.gz (3.6 kB)\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Preparing metadata (setup.py) ... \u001b[?25l-" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b \bdone\r\n", "\u001b[?25hBuilding wheels for collected packages: sklearn\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " Building wheel for sklearn (setup.py) ... \u001b[?25l-" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b \bdone\r\n", "\u001b[?25h Created wheel for sklearn: filename=sklearn-0.0.post1-py3-none-any.whl size=2935 sha256=27d86ea05ec407f5bede7b71fde558d0ed57ae3e4ea2c01e40f51cc339c58c5e\r\n", " Stored in directory: /home/kbuilder/.cache/pip/wheels/03/8b/6f/9f13c705de81a6b351b718b3cf917e41ad7c0933c8630d4dd4\r\n", "Successfully built sklearn\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Installing collected packages: sklearn\r\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Successfully installed sklearn-0.0.post1\r\n" ] } ], "source": [ "!pip install sklearn\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:27.668041Z", "iopub.status.busy": "2022-12-14T22:33:27.667367Z", "iopub.status.idle": "2022-12-14T22:33:28.343253Z", "shell.execute_reply": "2022-12-14T22:33:28.342430Z" }, "id": "54mb4J9PqqDh" }, "outputs": [], "source": [ "import os\n", "import sys\n", "\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "from IPython.display import clear_output\n", "from six.moves import urllib" ] }, { "cell_type": "markdown", "metadata": { "id": "fsjkwfsGOBMT" }, "source": [ "## 타이타닉 데이터셋을 불러오기\n", "\n", "타이타닉 데이터셋을 사용할 것입니다. 성별, 나이, 클래스, 기타 등 주어진 정보를 활용하여 승객이 살아남을 것인지 예측하는 것을 목표로 합니다." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:28.347740Z", "iopub.status.busy": "2022-12-14T22:33:28.347097Z", "iopub.status.idle": "2022-12-14T22:33:30.238190Z", "shell.execute_reply": "2022-12-14T22:33:30.237420Z" }, "id": "bNiwh-APcRVD" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2022-12-14 22:33:29.380734: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory\n", "2022-12-14 22:33:29.380865: W tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7'; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory\n", "2022-12-14 22:33:29.380876: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.\n" ] } ], "source": [ "import tensorflow.compat.v2.feature_column as fc\n", "\n", "import tensorflow as tf" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:30.242922Z", "iopub.status.busy": "2022-12-14T22:33:30.242085Z", "iopub.status.idle": "2022-12-14T22:33:30.331919Z", "shell.execute_reply": "2022-12-14T22:33:30.331157Z" }, "id": "DSeMKcx03d5R" }, "outputs": [], "source": [ "# Load dataset.\n", "dftrain = pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/train.csv')\n", "dfeval = pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/eval.csv')\n", "y_train = dftrain.pop('survived')\n", "y_eval = dfeval.pop('survived')" ] }, { "cell_type": "markdown", "metadata": { "id": "jjm4Qj0u7_cp" }, "source": [ "## 데이터 탐험하기" ] }, { "cell_type": "markdown", "metadata": { "id": "UrQzxKKh4d6u" }, "source": [ "데이터셋은 다음의 특성을 가집니다" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:30.335865Z", "iopub.status.busy": "2022-12-14T22:33:30.335596Z", "iopub.status.idle": "2022-12-14T22:33:30.349787Z", "shell.execute_reply": "2022-12-14T22:33:30.349186Z" }, "id": "rTjugo3n308g" }, "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", "
sexagen_siblings_spousesparchfareclassdeckembark_townalone
0male22.0107.2500ThirdunknownSouthamptonn
1female38.01071.2833FirstCCherbourgn
2female26.0007.9250ThirdunknownSouthamptony
3female35.01053.1000FirstCSouthamptonn
4male28.0008.4583ThirdunknownQueenstowny
\n", "
" ], "text/plain": [ " sex age n_siblings_spouses parch fare class deck \\\n", "0 male 22.0 1 0 7.2500 Third unknown \n", "1 female 38.0 1 0 71.2833 First C \n", "2 female 26.0 0 0 7.9250 Third unknown \n", "3 female 35.0 1 0 53.1000 First C \n", "4 male 28.0 0 0 8.4583 Third unknown \n", "\n", " embark_town alone \n", "0 Southampton n \n", "1 Cherbourg n \n", "2 Southampton y \n", "3 Southampton n \n", "4 Queenstown y " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dftrain.head()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:30.353173Z", "iopub.status.busy": "2022-12-14T22:33:30.352941Z", "iopub.status.idle": "2022-12-14T22:33:30.371058Z", "shell.execute_reply": "2022-12-14T22:33:30.370424Z" }, "id": "y86q1fj44lZs" }, "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", "
agen_siblings_spousesparchfare
count627.000000627.000000627.000000627.000000
mean29.6313080.5454550.37958534.385399
std12.5118181.1510900.79299954.597730
min0.7500000.0000000.0000000.000000
25%23.0000000.0000000.0000007.895800
50%28.0000000.0000000.00000015.045800
75%35.0000001.0000000.00000031.387500
max80.0000008.0000005.000000512.329200
\n", "
" ], "text/plain": [ " age n_siblings_spouses parch fare\n", "count 627.000000 627.000000 627.000000 627.000000\n", "mean 29.631308 0.545455 0.379585 34.385399\n", "std 12.511818 1.151090 0.792999 54.597730\n", "min 0.750000 0.000000 0.000000 0.000000\n", "25% 23.000000 0.000000 0.000000 7.895800\n", "50% 28.000000 0.000000 0.000000 15.045800\n", "75% 35.000000 1.000000 0.000000 31.387500\n", "max 80.000000 8.000000 5.000000 512.329200" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dftrain.describe()" ] }, { "cell_type": "markdown", "metadata": { "id": "8JSa_duD4tFZ" }, "source": [ "훈련셋은 627개의 샘플로 평가셋은 264개의 샘플로 구성되어 있습니다." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:30.374665Z", "iopub.status.busy": "2022-12-14T22:33:30.374038Z", "iopub.status.idle": "2022-12-14T22:33:30.378606Z", "shell.execute_reply": "2022-12-14T22:33:30.378041Z" }, "id": "Fs3Nu5pV4v5J" }, "outputs": [ { "data": { "text/plain": [ "(627, 264)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dftrain.shape[0], dfeval.shape[0]" ] }, { "cell_type": "markdown", "metadata": { "id": "RxCA4Nr45AfF" }, "source": [ "대부분의 승객은 20대와 30대 입니다." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:30.382017Z", "iopub.status.busy": "2022-12-14T22:33:30.381487Z", "iopub.status.idle": "2022-12-14T22:33:30.579189Z", "shell.execute_reply": "2022-12-14T22:33:30.578349Z" }, "id": "RYeCMm7K40ZN" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dftrain.age.hist(bins=20)" ] }, { "cell_type": "markdown", "metadata": { "id": "DItSwJ_B5B0f" }, "source": [ "남자 승객이 여자 승객보다 대략 2배 많습니다." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:30.582925Z", "iopub.status.busy": "2022-12-14T22:33:30.582646Z", "iopub.status.idle": "2022-12-14T22:33:30.711891Z", "shell.execute_reply": "2022-12-14T22:33:30.710634Z" }, "id": "b03dVV9q5Dv2" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj0AAAGdCAYAAAD5ZcJyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAayElEQVR4nO3deXCV5fn44TsRiDCQRAQDEWRxwVqEglaM+wgq1lq3VovLqLVaFa0bjkKnbu0YO047dRtt7bjQqWXUunTqrixViwoKKtCiRGxoFak4EDAKSp7fH345P6MEcIGT5LmumTOTnPc9h+fOczSfOQuUpJRSAAC0c6XFXgAAwOYgegCALIgeACALogcAyILoAQCyIHoAgCyIHgAgC6IHAMhCh2IvoDVpamqKt956K7p16xYlJSXFXg4AsBFSSrFixYqorq6O0tKWn88RPZ/y1ltvRd++fYu9DADgS1i0aFH06dOnxeOi51O6desWEZ/80MrLy4u8GgBgYzQ0NETfvn0Lv8dbIno+Ze1LWuXl5aIHANqYDb01xRuZAYAsiB4AIAuiBwDIgugBALIgegCALIgeACALogcAyILoAQCyIHoAgCyIHgAgC6IHAMiC6AEAsiB6AIAsiB4AIAuiBwDIgugBALIgegCALIgeACALogcAyILoAQCyIHoAgCyIHgAgC6IHAMiC6AEAsiB6AIAsiB4AIAuiBwDIgugBALIgegCALIgeACALogcAyILoAQCyIHoAgCyIHgAgC6IHAMiC6AEAsiB6AIAsiB4AIAuiBwDIgugBALIgegCALIgeACALogcAyEKHYi+gNRp8+WNRWtal2MsANpE3rzms2EsAisAzPQBAFkQPAJAF0QMAZEH0AABZED0AQBZEDwCQBdEDAGRB9AAAWRA9AEAWRA8AkAXRAwBkQfQAAFkQPQBAFkQPAJAF0QMAZEH0AABZED0AQBZEDwCQBdEDAGRB9AAAWRA9AEAWRA8AkAXRAwBkQfQAAFkQPQBAFkQPAJAF0QMAZEH0AABZED0AQBZEDwCQBdEDAGRB9AAAWRA9AEAWRA8AkAXRAwBkQfQAAFkQPQBAFkQPAJAF0QMAZEH0AABZ+ELRk1KKM844I7p37x4lJSUxe/bsTbSs9XvzzTeL+ucDAG1Phy9y8qOPPhp33HFHTJ06NQYOHBg9evTYVOsCAPhafaHoqauri969e8dee+21qdYDALBJbPTLW6ecckqce+65UV9fHyUlJdG/f/9oamqK2traGDBgQHTu3DmGDh0a9957b+E2U6dOjZKSknjsscdi2LBh0blz5zjwwANjyZIl8cgjj8Q3vvGNKC8vj+OPPz4aGxsLt3v00Udjn332icrKyth6663ju9/9btTV1a13fXPmzIlDDz00unbtGlVVVXHSSSfFu++++yV+JABAe7TR0XPdddfFVVddFX369Im33347ZsyYEbW1tTFx4sS45ZZbYu7cuXHBBRfEiSeeGNOmTWt22yuuuCJuvPHG+Mc//hGLFi2KY489Nn7729/GXXfdFQ899FA8/vjjccMNNxTOf//99+PCCy+MmTNnxlNPPRWlpaVx1FFHRVNT0zrXtmzZsjjwwANj2LBhMXPmzHj00UfjnXfeiWOPPXa9M61atSoaGhqaXQCA9mmjX96qqKiIbt26xRZbbBG9evWKVatWxdVXXx1PPvlk1NTURETEwIED45lnnonf/e53sf/++xdu+8tf/jL23nvviIg47bTTYvz48VFXVxcDBw6MiIjvf//7MWXKlLjkkksiIuKYY45p9mffdttt0bNnz5g3b14MHjz4c2u78cYbY9iwYXH11Vc3u03fvn3jtddei5122mmdM9XW1saVV165sT8CAKAN+9IfWV+wYEE0NjbGQQcdFF27di1cJk6c+LmXooYMGVL4uqqqKrp06VIInrXXLVmypPD966+/HmPGjImBAwdGeXl59O/fPyIi6uvr17mWl19+OaZMmdJsHTvvvHNExHpfFhs/fnwsX768cFm0aNEX/jkAAG3DF3oj86etXLkyIiIeeuih2HbbbZsdKysra/Z9x44dC1+XlJQ0+37tdZ9+6erwww+Pfv36xa233hrV1dXR1NQUgwcPjtWrV7e4lsMPPzx+9atffe5Y7969W5yhrKzsc2sFANqnLx09u+yyS5SVlUV9fX2zl7K+qqVLl8b8+fPj1ltvjX333TciIp555pn13mb48OHxl7/8Jfr37x8dOnzpkQCAduxLv7zVrVu3GDduXFxwwQVx5513Rl1dXbz00ktxww03xJ133vmlF7TVVlvF1ltvHb///e9jwYIFMXny5LjwwgvXe5uxY8fGe++9F2PGjIkZM2ZEXV1dPPbYY3HqqafGmjVrvvRaAID24ys9LfKLX/wievbsGbW1tfHGG29EZWVlDB8+PCZMmPCl77O0tDQmTZoUP/3pT2Pw4MExaNCguP766+OAAw5o8TbV1dXx7LPPxiWXXBIHH3xwrFq1Kvr16xejR4+O0lL/0gYAEFGSUkrFXkRr0dDQEBUVFdH3/LujtKxLsZcDbCJvXnNYsZcAfI3W/v5evnx5lJeXt3iep0EAgCyIHgAgC6IHAMiC6AEAsiB6AIAsiB4AIAuiBwDIgugBALIgegCALIgeACALogcAyILoAQCyIHoAgCyIHgAgC6IHAMiC6AEAsiB6AIAsiB4AIAuiBwDIgugBALIgegCALIgeACALogcAyILoAQCyIHoAgCyIHgAgC6IHAMiC6AEAsiB6AIAsiB4AIAuiBwDIgugBALIgegCALIgeACALogcAyILoAQCyIHoAgCyIHgAgC6IHAMhCh2IvoDWac+UhUV5eXuxlAABfI8/0AABZED0AQBZEDwCQBdEDAGRB9AAAWRA9AEAWRA8AkAXRAwBkQfQAAFkQPQBAFkQPAJAF0QMAZEH0AABZED0AQBZEDwCQBdEDAGRB9AAAWRA9AEAWRA8AkAXRAwBkQfQAAFkQPQBAFkQPAJAF0QMAZEH0AABZED0AQBZEDwCQBdEDAGRB9AAAWRA9AEAWRA8AkAXRAwBkQfQAAFkQPQBAFkQPAJAF0QMAZEH0AABZED0AQBZEDwCQBdEDAGRB9AAAWRA9AEAWRA8AkAXRAwBkQfQAAFkQPQBAFkQPAJAF0QMAZEH0AABZED0AQBZEDwCQBdEDAGRB9AAAWRA9AEAWRA8AkAXRAwBkQfQAAFkQPQBAFkQPAJAF0QMAZEH0AABZED0AQBZEDwCQBdEDAGRB9AAAWRA9AEAWRA8AkAXRAwBkQfQAAFkQPQBAFkQPAJAF0QMAZEH0AABZED0AQBZEDwCQBdEDAGRB9AAAWRA9AEAWRA8AkAXRAwBkQfQAAFkQPQBAFkQPAJAF0QMAZEH0AABZED0AQBZEDwCQBdEDAGRB9AAAWRA9AEAWRA8AkAXRAwBkoUOxF9AaDb78sSgt61LsZQBAu/HmNYcVewme6QEA8iB6AIAsiB4AIAuiBwDIgugBALIgegCALIgeACALogcAyILoAQCyIHoAgCyIHgAgC6IHAMiC6AEAsiB6AIAsiB4AIAuiBwDIgugBALIgegCALIgeACALogcAyILoAQCyIHoAgCyIHgAgC6IHAMiC6AEAsiB6AIAsiB4AIAuiBwDIgugBALIgegCALIgeACALogcAyILoAQCyIHoAgCyIHgAgC6IHAMiC6AEAsiB6AIAsiB4AIAuiBwDIQpuNnlNOOSWOPPLIYi8DAGgj2mz0AAB8EaIHAMjCZomeAw44IM4999w4//zzY6uttoqqqqq49dZb4/33349TTz01unXrFjvssEM88sgjERGxZs2aOO2002LAgAHRuXPnGDRoUFx33XXr/TOampqitra2cJuhQ4fGvffeuznGAwDagM32TM+dd94ZPXr0iBdeeCHOPffcOOuss+IHP/hB7LXXXvHSSy/FwQcfHCeddFI0NjZGU1NT9OnTJ+65556YN29eXHbZZTFhwoS4++67W7z/2tramDhxYtxyyy0xd+7cuOCCC+LEE0+MadOmtXibVatWRUNDQ7MLANA+laSU0qb+Qw444IBYs2ZNPP300xHxyTM5FRUVcfTRR8fEiRMjImLx4sXRu3fvmD59euy5556fu49zzjknFi9eXHj25pRTTolly5bFAw88EKtWrYru3bvHk08+GTU1NYXb/PjHP47Gxsa466671rmuK664Iq688srPXd/3/LujtKzLV54bAPjEm9cctsnuu6GhISoqKmL58uVRXl7e4nkdNtkKPmPIkCGFr7fYYovYeuutY9dddy1cV1VVFRERS5YsiYiIm266KW677baor6+PDz74IFavXh3f+ta31nnfCxYsiMbGxjjooIOaXb969eoYNmxYi2saP358XHjhhYXvGxoaom/fvl94NgCg9dts0dOxY8dm35eUlDS7rqSkJCI+eW/OpEmTYty4cfHrX/86ampqolu3bnHttdfG888/v877XrlyZUREPPTQQ7Httts2O1ZWVtbimsrKytZ7HABoPzZb9HwRzz77bOy1115x9tlnF66rq6tr8fxddtklysrKor6+Pvbff//NsUQAoI1pldGz4447xsSJE+Oxxx6LAQMGxB//+MeYMWNGDBgwYJ3nd+vWLcaNGxcXXHBBNDU1xT777BPLly+PZ599NsrLy+Pkk0/ezBMAAK1Nq4yen/zkJzFr1qw47rjjoqSkJMaMGRNnn3124SPt6/KLX/wievbsGbW1tfHGG29EZWVlDB8+PCZMmLAZVw4AtFab5dNbbcXad3/79BYAfL1aw6e3/I3MAEAWRA8AkAXRAwBkQfQAAFkQPQBAFkQPAJAF0QMAZEH0AABZED0AQBZEDwCQBdEDAGRB9AAAWRA9AEAWRA8AkAXRAwBkQfQAAFkQPQBAFkQPAJAF0QMAZEH0AABZED0AQBZEDwCQBdEDAGRB9AAAWRA9AEAWRA8AkAXRAwBkQfQAAFkQPQBAFkQPAJAF0QMAZEH0AABZED0AQBZEDwCQBdEDAGRB9AAAWRA9AEAWRA8AkAXRAwBkoUOxF9AazbnykCgvLy/2MgCAr5FnegCALIgeACALogcAyILoAQCyIHoAgCyIHgAgC6IHAMiC6AEAsiB6AIAsiB4AIAuiBwDIgugBALIgegCALIgeACALogcAyILoAQCyIHoAgCyIHgAgC6IHAMiC6AEAsiB6AIAsiB4AIAuiBwDIgugBALIgegCALIgeACALogcAyILoAQCyIHoAgCyIHgAgC6IHAMiC6AEAsiB6AIAsiB4AIAuiBwDIgugBALIgegCALIgeACALogcAyILoAQCyIHoAgCyIHgAgC6IHAMiC6AEAstCh2AtoTVJKERHR0NBQ5JUAABtr7e/ttb/HWyJ6PmXp0qUREdG3b98irwQA+KJWrFgRFRUVLR4XPZ/SvXv3iIior69f7w+tLWtoaIi+ffvGokWLory8vNjL2WTM2X7kMGNEHnPmMGOEOYshpRQrVqyI6urq9Z4nej6ltPSTtzhVVFQUfQM3tfLy8nY/Y4Q525McZozIY84cZoww5+a2MU9WeCMzAJAF0QMAZEH0fEpZWVlcfvnlUVZWVuylbDI5zBhhzvYkhxkj8pgzhxkjzNmalaQNfb4LAKAd8EwPAJAF0QMAZEH0AABZED0AQBZEz/+56aabon///rHlllvGiBEj4oUXXij2kr6SK664IkpKSppddt5558LxDz/8MMaOHRtbb711dO3aNY455ph45513irjiDfv73/8ehx9+eFRXV0dJSUk88MADzY6nlOKyyy6L3r17R+fOnWPUqFHx+uuvNzvnvffeixNOOCHKy8ujsrIyTjvttFi5cuVmnGLDNjTnKaec8rm9HT16dLNzWvuctbW18e1vfzu6desW22yzTRx55JExf/78ZudszGO0vr4+DjvssOjSpUtss802cfHFF8fHH3+8OUdZr42Z84ADDvjcfp555pnNzmnNc958880xZMiQwl9QV1NTE4888kjheHvYx4gNz9nW93FdrrnmmigpKYnzzz+/cF2b389EmjRpUurUqVO67bbb0ty5c9Ppp5+eKisr0zvvvFPspX1pl19+efrmN7+Z3n777cLlf//7X+H4mWeemfr27ZueeuqpNHPmzLTnnnumvfbaq4gr3rCHH344/exnP0v33Xdfioh0//33Nzt+zTXXpIqKivTAAw+kl19+OX3ve99LAwYMSB988EHhnNGjR6ehQ4em5557Lj399NNphx12SGPGjNnMk6zfhuY8+eST0+jRo5vt7XvvvdfsnNY+5yGHHJJuv/32NGfOnDR79uz0ne98J2233XZp5cqVhXM29Bj9+OOP0+DBg9OoUaPSrFmz0sMPP5x69OiRxo8fX4yR1mlj5tx///3T6aef3mw/ly9fXjje2uf861//mh566KH02muvpfnz56cJEyakjh07pjlz5qSU2sc+prThOdv6Pn7WCy+8kPr375+GDBmSzjvvvML1bX0/RU9KaY899khjx44tfL9mzZpUXV2damtri7iqr+byyy9PQ4cOXeexZcuWpY4dO6Z77rmncN0///nPFBFp+vTpm2mFX81nY6CpqSn16tUrXXvttYXrli1blsrKytKf//znlFJK8+bNSxGRZsyYUTjnkUceSSUlJem///3vZlv7F9FS9BxxxBEt3qYtzrlkyZIUEWnatGkppY17jD788MOptLQ0LV68uHDOzTffnMrLy9OqVas27wAb6bNzpvTJL8tP/1L5rLY451ZbbZX+8Ic/tNt9XGvtnCm1r31csWJF2nHHHdMTTzzRbK72sJ/Zv7y1evXqePHFF2PUqFGF60pLS2PUqFExffr0Iq7sq3v99dejuro6Bg4cGCeccELU19dHRMSLL74YH330UbOZd95559huu+3a7MwLFy6MxYsXN5upoqIiRowYUZhp+vTpUVlZGbvvvnvhnFGjRkVpaWk8//zzm33NX8XUqVNjm222iUGDBsVZZ50VS5cuLRxri3MuX748Iv7/P/q7MY/R6dOnx6677hpVVVWFcw455JBoaGiIuXPnbsbVb7zPzrnWn/70p+jRo0cMHjw4xo8fH42NjYVjbWnONWvWxKRJk+L999+PmpqadruPn51zrfayj2PHjo3DDjus2b5FtI//LrP/B0fffffdWLNmTbMNioioqqqKf/3rX0Va1Vc3YsSIuOOOO2LQoEHx9ttvx5VXXhn77rtvzJkzJxYvXhydOnWKysrKZrepqqqKxYsXF2fBX9Hada9rH9ceW7x4cWyzzTbNjnfo0CG6d+/epuYePXp0HH300TFgwICoq6uLCRMmxKGHHhrTp0+PLbbYos3N2dTUFOeff37svffeMXjw4IiIjXqMLl68eJ37vfZYa7OuOSMijj/++OjXr19UV1fHK6+8EpdccknMnz8/7rvvvohoG3O++uqrUVNTEx9++GF07do17r///thll11i9uzZ7WofW5ozon3sY0TEpEmT4qWXXooZM2Z87lh7+O8y++hprw499NDC10OGDIkRI0ZEv3794u67747OnTsXcWV8VT/84Q8LX++6664xZMiQ2H777WPq1KkxcuTIIq7syxk7dmzMmTMnnnnmmWIvZZNqac4zzjij8PWuu+4avXv3jpEjR0ZdXV1sv/32m3uZX8qgQYNi9uzZsXz58rj33nvj5JNPjmnTphV7WV+7lubcZZdd2sU+Llq0KM4777x44oknYssttyz2cjaJ7F/e6tGjR2yxxRafe/f5O++8E7169SrSqr5+lZWVsdNOO8WCBQuiV69esXr16li2bFmzc9ryzGvXvb597NWrVyxZsqTZ8Y8//jjee++9Njt3RMTAgQOjR48esWDBgohoW3Oec8458be//S2mTJkSffr0KVy/MY/RXr16rXO/1x5rTVqac11GjBgREdFsP1v7nJ06dYoddtghdtttt6itrY2hQ4fGdddd1+72saU516Ut7uOLL74YS5YsieHDh0eHDh2iQ4cOMW3atLj++uujQ4cOUVVV1eb3M/vo6dSpU+y2227x1FNPFa5ramqKp556qtlrtW3dypUro66uLnr37h277bZbdOzYsdnM8+fPj/r6+jY784ABA6JXr17NZmpoaIjnn3++MFNNTU0sW7YsXnzxxcI5kydPjqampsL/oNqi//znP7F06dLo3bt3RLSNOVNKcc4558T9998fkydPjgEDBjQ7vjGP0Zqamnj11VebBd4TTzwR5eXlhZccim1Dc67L7NmzIyKa7Wdrn/OzmpqaYtWqVe1mH1uyds51aYv7OHLkyHj11Vdj9uzZhcvuu+8eJ5xwQuHrNr+fxX4ndWswadKkVFZWlu644440b968dMYZZ6TKyspm7z5vay666KI0derUtHDhwvTss8+mUaNGpR49eqQlS5aklD752OF2222XJk+enGbOnJlqampSTU1NkVe9fitWrEizZs1Ks2bNShGRfvOb36RZs2alf//73ymlTz6yXllZmR588MH0yiuvpCOOOGKdH1kfNmxYev7559MzzzyTdtxxx1b1Ue6U1j/nihUr0rhx49L06dPTwoUL05NPPpmGDx+edtxxx/Thhx8W7qO1z3nWWWelioqKNHXq1GYf8W1sbCycs6HH6NqPxh588MFp9uzZ6dFHH009e/ZsNR+NTWnDcy5YsCBdddVVaebMmWnhwoXpwQcfTAMHDkz77bdf4T5a+5yXXnppmjZtWlq4cGF65ZVX0qWXXppKSkrS448/nlJqH/uY0vrnbA/72JLPfiqtre+n6Pk/N9xwQ9puu+1Sp06d0h577JGee+65Yi/pKznuuONS7969U6dOndK2226bjjvuuLRgwYLC8Q8++CCdffbZaauttkpdunRJRx11VHr77beLuOINmzJlSoqIz11OPvnklNInH1v/+c9/nqqqqlJZWVkaOXJkmj9/frP7WLp0aRozZkzq2rVrKi8vT6eeempasWJFEaZp2frmbGxsTAcffHDq2bNn6tixY+rXr186/fTTPxforX3Odc0XEen2228vnLMxj9E333wzHXrooalz586pR48e6aKLLkofffTRZp6mZRuas76+Pu23336pe/fuqaysLO2www7p4osvbvb3u6TUuuf80Y9+lPr165c6deqUevbsmUaOHFkInpTaxz6mtP4528M+tuSz0dPW97MkpZQ23/NKAADFkf17egCAPIgeACALogcAyILoAQCyIHoAgCyIHgAgC6IHAMiC6AEAsiB6AIAsiB4AIAuiBwDIgugBALLw/wBn75rQ9GVHCgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dftrain.sex.value_counts().plot(kind='barh')" ] }, { "cell_type": "markdown", "metadata": { "id": "rK6WQ29q5Jf5" }, "source": [ "대부분의 승객은 \"삼등석\" 입니다." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:30.716247Z", "iopub.status.busy": "2022-12-14T22:33:30.715336Z", "iopub.status.idle": "2022-12-14T22:33:30.837497Z", "shell.execute_reply": "2022-12-14T22:33:30.836592Z" }, "id": "dgpJVeCq5Fgd" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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03Httde21SG86w40k4iIxsbGFufOj370oxbbO9pM5s+fHzfccEM899xzMWfOnNixY0dcfPHF8frrr5f3OdBrZteuXTF+/PjYvn17/Pd//3c8+OCDMWvWrLjzzjsrcUiH7WBmEhExefLkFufKzJkzy9s62kxOOumkmDFjRixevDgWLVoUF154YUyYMCF+//vfR0R+58geB5pLRBudJ4kWzj333HTDDTeUv9+1a1fq06dPmj59egVX1XamTp2azjrrrFa3bd68OXXu3Dk9/PDD5ftefvnlFBFpwYIFbbTCthcR6ZFHHil/v3v37lRXV5e+/vWvl+/bvHlzKhaL6Uc/+lFKKaWXXnopRUT67W9/W97nySefTIVCIf3v//5vm639SHn7TFJK6aqrrkoTJkzY58909JmklNKGDRtSRKT58+enlA7uNTN79uxUVVWV1q9fX97n29/+diqVSmnbtm1tewBHwNtnklJK559/frrpppv2+TMdfSYppXT88cen73//+86Rt9kzl5Ta7jxxRegttm/fHosXL44xY8aU76uqqooxY8bEggULKriytvXKK69Enz59YuDAgXHllVfG6tWrIyJi8eLFsWPHjhbzOfXUU6Nfv35ZzWflypWxfv36FnOoqamJkSNHluewYMGCqK2tjREjRpT3GTNmTFRVVcXChQvbfM1tZd68edGrV68YMmRIXH/99bFx48bythxm0tTUFBH//3/afDCvmQULFsSZZ54ZvXv3Lu8zduzYaG5ubvEv46PV22eyx7/9279Fjx494owzzogpU6bEG2+8Ud7WkWeya9eu+PGPfxyvv/56NDQ0OEf+n7fPZY+2OE/8T1ff4i9/+Uvs2rWrxVAjInr37h1/+MMfKrSqtjVy5MiYNWtWDBkyJNatWxfTpk2LD33oQ/Hiiy/G+vXro0uXLlFbW9viZ3r37h3r16+vzIIrYM+xtnae7Nm2fv366NWrV4vtnTp1ihNOOKHDzqqxsTE+/vGPx4ABA2LFihXxpS99KcaNGxcLFiyIY445psPPZPfu3XHzzTfHBz7wgTjjjDMiIg7qNbN+/fpWz6U9245mrc0kIuKTn/xk9O/fP/r06RPPP/98fPGLX4xly5bFv//7v0dEx5zJCy+8EA0NDbF169aorq6ORx55JE4//fRYunRp1ufIvuYS0XbniRCihXHjxpW/Hjp0aIwcOTL69+8fDz30UBx77LEVXBnt3RVXXFH++swzz4yhQ4fGySefHPPmzYvRo0dXcGVt44YbbogXX3yxxWfqcrevmbz1c2Fnnnlm1NfXx+jRo2PFihVx8sknt/Uy28SQIUNi6dKl0dTUFD/96U/jqquuivnz51d6WRW3r7mcfvrpbXaeeGvsLXr06BHHHHPMXp/Wf/XVV6Ourq5Cq6qs2traOOWUU2L58uVRV1cX27dvj82bN7fYJ7f57DnW/Z0ndXV1e33AfufOnbFp06ZsZjVw4MDo0aNHLF++PCI69kxuvPHGeOKJJ+LXv/51nHTSSeX7D+Y1U1dX1+q5tGfb0WpfM2nNyJEjIyJanCsdbSZdunSJQYMGxdlnnx3Tp0+Ps846K/75n/8563MkYt9zac2ROk+E0Ft06dIlzj777Jg7d275vt27d8fcuXNbvGeZk9deey1WrFgR9fX1cfbZZ0fnzp1bzGfZsmWxevXqrOYzYMCAqKurazGH5ubmWLhwYXkODQ0NsXnz5li8eHF5n6eeeip2795dfjF3dH/6059i48aNUV9fHxEdcyYppbjxxhvjkUceiaeeeioGDBjQYvvBvGYaGhrihRdeaBGJc+bMiVKpVH6L4GhyoJm0ZunSpRERLc6VjjST1uzevTu2bduW5TmyP3vm0pojdp68ww92d1g//vGPU7FYTLNmzUovvfRSuvbaa1NtbW2LT6V3ZLfcckuaN29eWrlyZXr22WfTmDFjUo8ePdKGDRtSSildd911qV+/fumpp55KixYtSg0NDamhoaHCq373bdmyJS1ZsiQtWbIkRUS677770pIlS9If//jHlFJKM2bMSLW1tennP/95ev7559OECRPSgAED0ptvvll+jMbGxjRs2LC0cOHC9Mwzz6TBgwenT3ziE5U6pMO2v5ls2bIl3XrrrWnBggVp5cqV6Ve/+lUaPnx4Gjx4cNq6dWv5MTraTK6//vpUU1OT5s2bl9atW1e+vfHGG+V9DvSa2blzZzrjjDPSxRdfnJYuXZr+8z//M/Xs2TNNmTKlEod02A40k+XLl6evfOUradGiRWnlypXp5z//eRo4cGAaNWpU+TE62kxuv/32NH/+/LRy5cr0/PPPp9tvvz0VCoX0y1/+MqWU3zmyx/7m0pbniRBqxTe+8Y3Ur1+/1KVLl3Tuueem5557rtJLajOXX355qq+vT126dEnvec970uWXX56WL19e3v7mm2+mz372s+n4449P3bp1SxMnTkzr1q2r4IqPjF//+tcpIva6XXXVVSmlv/0J/Ze//OXUu3fvVCwW0+jRo9OyZctaPMbGjRvTJz7xiVRdXZ1KpVK6+uqr05YtWypwNO+O/c3kjTfeSBdffHHq2bNn6ty5c+rfv3+aPHnyXv+A6GgzaW0eEZEeeOCB8j4H85pZtWpVGjduXDr22GNTjx490i233JJ27NjRxkfz7jjQTFavXp1GjRqVTjjhhFQsFtOgQYPSbbfdlpqamlo8TkeayTXXXJP69++funTpknr27JlGjx5djqCU8jtH9tjfXNryPCmklNLBXz8CAOg4fEYIAMiWEAIAsiWEAIBsCSEAIFtCCADIlhACALIlhACAbAkhACBbQggAyJYQAgCyJYQAgGwJIQAgW/8HC2wYI0rkLS4AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dftrain['class'].value_counts().plot(kind='barh')" ] }, { "cell_type": "markdown", "metadata": { "id": "FXJhGGL85TLp" }, "source": [ "여자는 남자보다 살아남을 확률이 훨씬 높습니다. 이는 명확하게 모델에 유용한 특성입니다." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:30.841807Z", "iopub.status.busy": "2022-12-14T22:33:30.841049Z", "iopub.status.idle": "2022-12-14T22:33:30.976353Z", "shell.execute_reply": "2022-12-14T22:33:30.975400Z" }, "id": "lSZYa7c45Ttt" }, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 0, '% survive')" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlEAAAGwCAYAAACJjDBkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAitElEQVR4nO3deXTV9Z3w8U/CElATQFE2MwIioINoKCLBDanaKqUqziiKVB2traJToZzjuGLFilsV69aKC+AgWG2n0ykKjlScSqmogBVwI4DYUfSgshkbIPyeP/qYp3lAyv2SFV+vc3KO+eV37/18uCxvb+69ycuyLAsAAHKSX98DAAA0RiIKACCBiAIASCCiAAASiCgAgAQiCgAggYgCAEjQtL4H2F1t3bo13n///SgsLIy8vLz6HgcA2AlZlsWGDRuiY8eOkZ+/48eaRFQtef/996O4uLi+xwAAErz33nux//777/AcEVVLCgsLI+Kvd0JRUVE9TwMA7Iz169dHcXFx1b/jOyKiaskX38IrKioSUQDQyOzMU3E8sRwAIIGIAgBIIKIAABKIKACABCIKACCBiAIASCCiAAASiCgAgAQiCgAggYgCAEggogAAEogoAIAEIgoAIIGIAgBIIKIAABKIKACABCIKACCBiAIASCCiAAASiCgAgAQiCgAggYgCAEggogAAEogoAIAEIgoAIIGIAgBIIKIAABKIKACABCIKACCBiAIASCCiAAASiCgAgAQiCgAggYgCAEggogAAEogoAIAEIgoAIIGIAgBIIKIAABKIKACABCIKACCBiAIASCCiAAASNK3vAXZ3vcbOivyCPep7DHKw8pbB9T0CAI2AR6IAABKIKACABCIKACCBiAIASCCiAAASiCgAgAQiCgAggYgCAEggogAAEogoAIAEIgoAIIGIAgBIIKIAABKIKACABCIKACCBiAIASCCiAAASiCgAgAQiCgAggYgCAEggogAAEogoAIAEIgoAIIGIAgBIIKIAABKIKACABCIKACCBiAIASCCiAAASiCgAgAQiCgAggYgCAEggogAAEogoAIAEIgoAIIGIAgBIIKIAABKIKACABCIKACCBiAIASCCiAAASiKiIOP/88+O0006r7zEAgEZERAEAJBBRAAAJGl1EDRw4MC6//PK44oorok2bNtGuXbuYOHFifPbZZ3HBBRdEYWFh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vPLKKzF79uzIz8+P008/PbZu3brd2dauXRuDBg2KkpKSeOWVV2LmzJnx4Ycfxplnnvml+4wfPz5atWpV9VFcXFwzv1AAQIOUl2VZVl83PmHChJgwYUKsXLkyKioqYu+9947nnnsuSktLq8656KKLory8PB5//PGYM2dOHH/88fHcc8/F17/+9YiIuOWWW+Kqq66KsrKy6Nq1a0REfP/734+VK1fGzJkzt3u7a9asiX333Tdef/316NWrV6xcuTK6dOkSCxcujMMPPzxuuumm+P3vfx+zZs2qusyf//znKC4ujrfeeiu6d+++zXVWVFRERUVF1efr16+P4uLiKL7iF5FfsEeN/HoBAH+18pbBtXK969evj1atWsW6deuiqKhoh+fW63Oi/tayZcuivLw8TjzxxGrHN23aFCUlJdWO9e7du+q/27VrF3vssUdVQH1xbP78+VWfv/POO3H99dfHSy+9FGvWrKl6BGrVqlXRq1evbWZ57bXX4vnnn4+99tprm6+VlZVtN6IKCgqioKBgJ7cFABq7BhNRGzdujIiIGTNmRKdOnap97f+Pk2bNmlX9d15eXrXPvzj2t9+qGzJkSBxwwAExceLE6NixY2zdujV69eoVmzZt+tJZhgwZErfeeus2X+vQoUNuiwEAu6UGE1GHHHJIFBQUxKpVq+K4446rsev9+OOP46233oqJEyfGMcccExERL7744g4v06dPn/jlL38ZnTt3jqZNG8wvEQDQgDSYdywvLCyMMWPGxKhRo2Ly5MlRVlYWCxYsiHvuuScmT56cfL1t2rSJffbZJx588MFYtmxZ/O53v4vRo0fv8DIjR46MTz75JM4+++x4+eWXo6ysLGbNmhUXXHBBVFZWJs8CAOw+GtTDLOPGjYt99903xo8fH8uXL4/WrVtHnz594uqrr06+zvz8/Jg+fXr867/+a/Tq1St69OgRP/3pT2PgwIFfepmOHTvG3Llz48orr4yTTjopKioq4oADDohvfvObkZ/fYLoTAKhH9frqvN3ZF8/u9+o8AKh5DeHVeR5WAQBIIKIAABKIKACABCIKACCBiAIASCCiAAASiCgAgAQiCgAggYgCAEggogAAEogoAIAEIgoAIIGIAgBIIKIAABKIKACABCIKACCBiAIASCCiAAASiCgAgAQiCgAggYgCAEggogAAEogoAIAEIgoAIIGIAgBIIKIAABKIKACABCIKACCBiAIASCCiAAASiCgAgAQiCgAggYgCAEggogAAEogoAIAEIgoAIIGIAgBIIKIAABKIKACABE3re4Dd3eIffSOKiorqewwAoIZ5JAoAIIGIAgBIIKIAABKIKACABCIKACCBiAIASCCiAAASiCgAgAQiCgAggYgCAEggogAAEogoAIAEIgoAIIGIAgBIIKIAABKIKACABCIKACCBiAIASCCiAAASiCgAgAQiCgAggYgCAEggogAAEogoAIAEIgoAIIGIAgBIIKIAABKIKACABCIKACCBiAIASCCiAAASiCgAgAQiCgAggYgCAEggogAAEogoAIAEIgoAIIGIAgBIIKIAABKIKACABCIKACCBiAIASCCiAAASiCgAgARN63uA3VWWZRERsX79+nqeBADYWV/8u/3Fv+M7IqJqyccffxwREcXFxfU8CQCQqw0bNkSrVq12eI6IqiV77713RESsWrXq794Ju4v169dHcXFxvPfee1FUVFTf49SJr9rOX7V9I+z8Vdj5q7ZvhJ13tHOWZbFhw4bo2LHj371OEVVL8vP/+nSzVq1afWV+g36hqKjIzru5r9q+EXb+Kviq7Rth5y+zsw9+eGI5AEACEQUAkEBE1ZKCgoIYO3ZsFBQU1PcodcbOu7+v2r4Rdv4q+KrtG2HnmpKX7cxr+AAAqMYjUQAACUQUAEACEQUAkEBEAQAkEFG74L777ovOnTtHixYt4sgjj4z58+fv8Pwnn3wyevbsGS1atIhDDz00nn766TqatObksvOSJUvijDPOiM6dO0deXl5MmDCh7gatQbnsPHHixDjmmGOiTZs20aZNmzjhhBP+7u+LhiaXfX/1q19F3759o3Xr1rHnnnvG4YcfHo899lgdTlszcv2z/IXp06dHXl5enHbaabU7YA3LZd9JkyZFXl5etY8WLVrU4bQ1I9f7eO3atTFy5Mjo0KFDFBQURPfu3Rvd39m57Dxw4MBt7ue8vLwYPHhwHU68a3K9jydMmBA9evSIli1bRnFxcYwaNSr+8pe/5HajGUmmT5+eNW/ePHvkkUeyJUuWZN/97nez1q1bZx9++OF2z587d27WpEmT7LbbbsuWLl2aXXvttVmzZs2y119/vY4nT5frzvPnz8/GjBmTTZs2LWvfvn1211131e3ANSDXnc8555zsvvvuyxYu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2nHHHZedd9551c7/xS9+kXXv3j1r3rx59o//+I/ZjBkz6njiXZfLzitWrMgiYpuP4447ru4H3wW57HzAAQdsd+exY8fW/eCJctn3mmuuybp165a1aNEia9OmTVZaWppNnz69HqbeNbn+Wf5bjS2isiy3fa+44oqqc9u1a5edcsop2YIFC+ph6l2T6338hz/8ITvyyCOzgoKCrGvXrtmPf/zjbMuWLXU89a7Jdec333wzi4js2WefreNJa0Yu+27evDm74YYbsgMPPDBr0aJFVlxcnF166aXZp59+mtNt5mVZLo9bAQAQ4TlRAABJRBQAQAIRBQCQQEQBACQQUQAACUQUAEACEQUAkEBEAQAkEFEAdWjSpEnRunXr+h4DqAEiCmh0pk6dGsXFxdGmTZsYPXp0ta+tXLkyunfvHuvXr6+n6XbsrLPOirfffru+xwBqgB/7AjQqa9asieLi4pg0aVJ07do1Bg8eHI888kh861vfioiIU045JS666KIYOnRonc5VWVkZeXl52/xkeGD35U870KgsX748WrVqFWeddVYcccQRcfzxx8cbb7wRERHTpk2LZs2a7VRAffrppzF8+PDYd999o2XLlnHQQQfFo48+GhERc+bMiby8vFi7dm3V+YsWLYq8vLxYuXJlRPy/b8v95je/iUMOOSQKCgrioYceihYtWlS7XETED37wgxg0aFC1y0VEvP3225GXlxdvvvlmtfPvuuuuOPDAA6s+X7x4cZx88smx1157Rbt27WLEiBGxZs2aXH7ZgFogooBG5aCDDory8vJYuHBhfPLJJ/Hyyy9H796949NPP43rrrsu7r333p26nuuuuy6WLl0azzzzTLzxxhvxwAMPRNu2bXOapby8PG699dZ46KGHYsmSJTF8+PBo3bp1/PKXv6w6p7KyMp544okYPnz4Npfv3r179O3bN6ZOnVrt+NSpU+Occ86JiIi1a9fGoEGDoqSkJF555ZWYOXNmfPjhh3HmmWfmNCtQ80QU0Ki0adMmJk+eHN/5zneiX79+8Z3vfCe+8Y1vxJgxY+Kyyy6LFStWRElJSfTq1SueeuqpL72eVatWRUlJSfTt2zc6d+4cJ5xwQgwZMiSnWTZv3hz3339/DBgwIHr06BF77rlnDBs2LB5//PGqc2bPnh1r166NM844Y7vXMXz48Jg2bVrV52+//Xa8+uqrVdF17733RklJSdx8883Rs2fPKCkpiUceeSSef/55z62Ceta0vgcAyNXpp58ep59+etXnL7zwQvzpT3+Ke+65J7p16xbTpk2L9u3bR79+/eLYY4+N/fbbb5vruOSSS+KMM86IBQsWxEknnRSnnXZaDBgwIKc5mjdvHr179652bPjw4dG/f/94//33o2PHjjF16tQYPHjwl74ib9iwYTFmzJj44x//GP3794+pU6dGnz59omfPnhER8dprr8Xzzz8fe+211zaXLSsri+7du+c0M1BzPBIFNGoVFRVx6aWXxs9//vNYtmxZbNmyJY477rjo0aNHdO/ePV566aXtXu7kk0+Od999N0aNGhXvv/9+fP3rX48xY8ZERFQ9OfxvX3ezefPmba6jZcuWkZeXV+3YEUccEQceeGBMnz49Pv/88/iP//iP7X4r7wvt27ePQYMGVT169fjjj1c7f+PGjTFkyJBYtGhRtY933nknjj322J38VQJqg4gCGrWbbropvvnNb0afPn2isrIytmzZUvW1zZs3R2Vl5Zdedt99943zzjsv/v3f/z0mTJgQDz74YNXxiIgPPvig6txFixbt9EzDhw+PqVOnxn/9139Ffn5+DB48+O+e/8QTT8S8efNi+fLlMWzYsKqv9enTJ5YsWRKdO3eObt26VfvYc889d3omoOaJKKDRWrp0aTzxxBNx4403RkREz549Iz8/Px5++OGYMWNGvPnmm3HEEUds97LXX399/Od//mcsW7YslixZEr/97W/j4IMPjoiIbt26RXFxcdxwww3xzjvvxIwZM+InP/nJTs81fPjwWLBgQfz4xz+Of/qnf4qCgoIdnj906NDYsGFDXHLJJXH88cdHx44dq742cuTI+OSTT+Lss8+Ol19+OcrKymLWrFlxwQUX7DAQgdonooBGKcuyuPjii+POO++sekSmZcuWMWnSpLjxxhvjwgsvjHvvvTc6deq03cs3b948rrrqqujdu3cce+yx0aRJk5g+fXpERDRr1iymTZsWb775ZvTu3TtuvfXWuOmmm3Z6tm7dukW/fv3iT3/60w6/lfeFwsLCGDJkSLz22mvbnN+xY8eYO3duVFZWxkknnRSHHnpoXHHFFdG6dWvvSQX1zJttAgAk8L8xAAAJRBQAQAIRBQCQQEQBACQQUQAACUQUAEACEQUAkEBEAQAkEFEAAAlEFABAAhEFAJDg/wC/H7j59XciQgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pd.concat([dftrain, y_train], axis=1).groupby('sex').survived.mean().plot(kind='barh').set_xlabel('% survive')" ] }, { "cell_type": "markdown", "metadata": { "id": "qCHvgeorEsHa" }, "source": [ "## 모델의 특성 엔지니어링" ] }, { "cell_type": "markdown", "metadata": { "id": "Dhcq8Ds4mCtm" }, "source": [ "> 경고: 이 튜토리얼에 설명된 tf.feature_columns 모듈은 새 코드에는 권장되지 않습니다. [Keras 전처리 레이어](https://tensorflow.org/guide/versions)에서 이 기능을 다룹니다. 마이그레이션 지침은 마이그레이션 특성 열 가이드를 참조하세요. tf.feature_columns 모듈은 TF1 Estimators와 함께 사용하도록 설계되었습니다. 이는 우리의 호환성 보장 대상에 해당하지만 보안 취약점 외에는 수정 사항이 제공되지 않습니다." ] }, { "cell_type": "markdown", "metadata": { "id": "VqDKQLZn8L-B" }, "source": [ "추정기는 [특성 열](https://www.tensorflow.org/tutorials/structured_data/feature_columns)이라는 시스템을 사용하여 모델이 각 원시 입력 특성을 해석하는 방식을 설명합니다. 추정기는 숫자 입력의 벡터를 예상하고 *특성 열*은 모델이 각 특성을 변환하는 방식을 설명합니다.\n", "\n", "효과적인 모델 학습에서는 적절한 특성 열을 고르고 다듬는 것이 키포인트 입니다. 하나의 특성 열은 특성 딕셔너리(dict)의 원본 입력으로 만들어진 열(*기본 특성 열*)이거나 하나 이상의 기본 열(*얻어진 특성 열*)에 정의된 변환을 이용하여 새로 생성된 열입니다.\n", "\n", "선형 추정기는 수치형, 범주형 특성을 모두 사용할 수 있습니다. 특성 열은 모든 텐서플로 추정기와 함께 작동하고 목적은 모델링에 사용되는 특성들을 정의하는 것입니다. 또한 원-핫-인코딩(one-hot-encoding), 정규화(normalization), 버킷화(bucketization)와 같은 특성 공학 방법을 지원합니다." ] }, { "cell_type": "markdown", "metadata": { "id": "puZFOhTDkblt" }, "source": [ "### 기본 특성 열" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:30.980515Z", "iopub.status.busy": "2022-12-14T22:33:30.980247Z", "iopub.status.idle": "2022-12-14T22:33:30.986860Z", "shell.execute_reply": "2022-12-14T22:33:30.986204Z" }, "id": "GpveXYSsADS6" }, "outputs": [], "source": [ "CATEGORICAL_COLUMNS = ['sex', 'n_siblings_spouses', 'parch', 'class', 'deck',\n", " 'embark_town', 'alone']\n", "NUMERIC_COLUMNS = ['age', 'fare']\n", "\n", "feature_columns = []\n", "for feature_name in CATEGORICAL_COLUMNS:\n", " vocabulary = dftrain[feature_name].unique()\n", " feature_columns.append(tf.feature_column.categorical_column_with_vocabulary_list(feature_name, vocabulary))\n", "\n", "for feature_name in NUMERIC_COLUMNS:\n", " feature_columns.append(tf.feature_column.numeric_column(feature_name, dtype=tf.float32))" ] }, { "cell_type": "markdown", "metadata": { "id": "Gt8HMtwOh9lJ" }, "source": [ "`input_function`은 입력 파이프라인을 스트리밍으로 공급하는 `tf.data.Dataset`으로 데이터를 변환하는 방법을 명시합니다. `tf.data.Dataset`은 데이터 프레임, CSV 형식 파일 등과 같은 여러 소스를 사용합니다." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:30.990172Z", "iopub.status.busy": "2022-12-14T22:33:30.989726Z", "iopub.status.idle": "2022-12-14T22:33:30.994712Z", "shell.execute_reply": "2022-12-14T22:33:30.994049Z" }, "id": "qVtrIHFnAe7w" }, "outputs": [], "source": [ "def make_input_fn(data_df, label_df, num_epochs=10, shuffle=True, batch_size=32):\n", " def input_function():\n", " ds = tf.data.Dataset.from_tensor_slices((dict(data_df), label_df))\n", " if shuffle:\n", " ds = ds.shuffle(1000)\n", " ds = ds.batch(batch_size).repeat(num_epochs)\n", " return ds\n", " return input_function\n", "\n", "train_input_fn = make_input_fn(dftrain, y_train)\n", "eval_input_fn = make_input_fn(dfeval, y_eval, num_epochs=1, shuffle=False)" ] }, { "cell_type": "markdown", "metadata": { "id": "P7UMVkQnkrgb" }, "source": [ "다음과 같이 데이터셋을 점검할 수 있습니다:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:30.998316Z", "iopub.status.busy": "2022-12-14T22:33:30.997717Z", "iopub.status.idle": "2022-12-14T22:33:34.747402Z", "shell.execute_reply": "2022-12-14T22:33:34.746542Z" }, "id": "8ZcG_3KiCb1M" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Some feature keys: ['sex', 'age', 'n_siblings_spouses', 'parch', 'fare', 'class', 'deck', 'embark_town', 'alone']\n", "\n", "A batch of class: [b'Third' b'Third' b'First' b'Third' b'Third' b'Third' b'First' b'Third'\n", " b'Second' b'First']\n", "\n", "A batch of Labels: [0 0 1 0 1 0 0 0 1 1]\n" ] } ], "source": [ "ds = make_input_fn(dftrain, y_train, batch_size=10)()\n", "for feature_batch, label_batch in ds.take(1):\n", " print('Some feature keys:', list(feature_batch.keys()))\n", " print()\n", " print('A batch of class:', feature_batch['class'].numpy())\n", " print()\n", " print('A batch of Labels:', label_batch.numpy())" ] }, { "cell_type": "markdown", "metadata": { "id": "lMNBMyodjlW3" }, "source": [ "또한 `tf.keras.layers.DenseFeatures` 층을 사용하여 특정한 특성 열의 결과를 점검할 수 있습니다:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:34.751025Z", "iopub.status.busy": "2022-12-14T22:33:34.750742Z", "iopub.status.idle": "2022-12-14T22:33:34.777588Z", "shell.execute_reply": "2022-12-14T22:33:34.776912Z" }, "id": "IMjlmbPlDmkB" }, "outputs": [ { "data": { "text/plain": [ "array([[29.],\n", " [51.],\n", " [28.],\n", " [30.],\n", " [ 4.],\n", " [ 4.],\n", " [31.],\n", " [30.],\n", " [21.],\n", " [58.]], dtype=float32)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "age_column = feature_columns[7]\n", "tf.keras.layers.DenseFeatures([age_column])(feature_batch).numpy()" ] }, { "cell_type": "markdown", "metadata": { "id": "f4zrAdCIjr3s" }, "source": [ "`DenseFeatures`는 조밀한(dense) 텐서만 허용합니다. 범주형 데이터를 점검하려면 우선 범주형 열에 indicator_column 함수를 적용해야 합니다:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:34.781341Z", "iopub.status.busy": "2022-12-14T22:33:34.780778Z", "iopub.status.idle": "2022-12-14T22:33:34.809309Z", "shell.execute_reply": "2022-12-14T22:33:34.808654Z" }, "id": "1VXmXFTSFEvv" }, "outputs": [ { "data": { "text/plain": [ "array([[0., 1.],\n", " [1., 0.],\n", " [1., 0.],\n", " [1., 0.],\n", " [0., 1.],\n", " [1., 0.],\n", " [1., 0.],\n", " [1., 0.],\n", " [0., 1.],\n", " [0., 1.]], dtype=float32)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gender_column = feature_columns[0]\n", "tf.keras.layers.DenseFeatures([tf.feature_column.indicator_column(gender_column)])(feature_batch).numpy()" ] }, { "cell_type": "markdown", "metadata": { "id": "MEp59g5UkHYY" }, "source": [ "모든 기본 특성을 모델에 추가한 다음에 모델을 훈련해 봅시다. 모델을 훈련하려면 `tf.estimator` API를 이용한 메서드 호출 한번이면 충분합니다:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:34.813213Z", "iopub.status.busy": "2022-12-14T22:33:34.812675Z", "iopub.status.idle": "2022-12-14T22:33:42.236989Z", "shell.execute_reply": "2022-12-14T22:33:42.236265Z" }, "id": "aGXjdnqqdgIs" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'accuracy': 0.7462121, 'accuracy_baseline': 0.625, 'auc': 0.8314049, 'auc_precision_recall': 0.7929586, 'average_loss': 0.4918203, 'label/mean': 0.375, 'loss': 0.48571348, 'precision': 0.64285713, 'prediction/mean': 0.4394845, 'recall': 0.72727275, 'global_step': 200}\n" ] } ], "source": [ "linear_est = tf.estimator.LinearClassifier(feature_columns=feature_columns)\n", "linear_est.train(train_input_fn)\n", "result = linear_est.evaluate(eval_input_fn)\n", "\n", "clear_output()\n", "print(result)" ] }, { "cell_type": "markdown", "metadata": { "id": "3tOan4hDsG6d" }, "source": [ "### 도출된 특성 열" ] }, { "cell_type": "markdown", "metadata": { "id": "NOG2FSTHlAMu" }, "source": [ "이제 정확도 75%에 도달했습니다. 별도로 각 기본 특성 열을 사용하면 데이터를 설명하기에는 충분치 않을 수 있습니다. 예를 들면, 성별과 레이블간의 상관관계는 성별에 따라 다를 수 있습니다. 따라서 `gender=\"Male\"`과 'gender=\"Female\"`의 단일 모델가중치만 배우면 모든 나이-성별 조합(이를테면 `gender=\"Male\" 그리고 'age=\"30\"`그리고`gender=\"Male\"`그리고`age=\"40\"`을 구별하는 것)을 포함시킬 수 없습니다.\n", "\n", "서로 다른 특성 조합들 간의 차이를 학습하기 위해서 모델에 *교차 특성 열*을 추가할 수 있습니다(또한 교차 열 이전에 나이 열을 버킷화할 수 있습니다):" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:42.240965Z", "iopub.status.busy": "2022-12-14T22:33:42.240408Z", "iopub.status.idle": "2022-12-14T22:33:42.244115Z", "shell.execute_reply": "2022-12-14T22:33:42.243472Z" }, "id": "AM-RsDzNfGlu" }, "outputs": [], "source": [ "age_x_gender = tf.feature_column.crossed_column(['age', 'sex'], hash_bucket_size=100)" ] }, { "cell_type": "markdown", "metadata": { "id": "DqDFyPKQmGTN" }, "source": [ "조합 특성을 모델에 추가하고 모델을 다시 훈련합니다:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:42.247711Z", "iopub.status.busy": "2022-12-14T22:33:42.247153Z", "iopub.status.idle": "2022-12-14T22:33:49.279273Z", "shell.execute_reply": "2022-12-14T22:33:49.278590Z" }, "id": "s8FV9oPQfS-g" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'accuracy': 0.7537879, 'accuracy_baseline': 0.625, 'auc': 0.84459746, 'auc_precision_recall': 0.79323035, 'average_loss': 0.4729848, 'label/mean': 0.375, 'loss': 0.46476856, 'precision': 0.6666667, 'prediction/mean': 0.41475508, 'recall': 0.68686867, 'global_step': 200}\n" ] } ], "source": [ "derived_feature_columns = [age_x_gender]\n", "linear_est = tf.estimator.LinearClassifier(feature_columns=feature_columns+derived_feature_columns)\n", "linear_est.train(train_input_fn)\n", "result = linear_est.evaluate(eval_input_fn)\n", "\n", "clear_output()\n", "print(result)" ] }, { "cell_type": "markdown", "metadata": { "id": "rwfdZj7ImLwb" }, "source": [ "이제 정확도 77.6%에 도달했습니다. 기본 특성만 이용한 학습보다는 약간 더 좋았습니다. 더 많은 특성과 변환을 사용해서 더 잘할 수 있다는 것을 보여주세요!" ] }, { "cell_type": "markdown", "metadata": { "id": "8_eyb9d-ncjH" }, "source": [ "이제 훈련 모델을 이용해서 평가셋에서 승객에 대해 예측을 할 수 있습니다. 텐서플로 모델은 한번에 샘플의 배치 또는 일부에 대한 예측을 하도록 최적화되어있습니다. 앞서, `eval_input_fn`은 모든 평가셋을 사용하도록 정의되어 있었습니다." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:49.283204Z", "iopub.status.busy": "2022-12-14T22:33:49.282591Z", "iopub.status.idle": "2022-12-14T22:33:50.786720Z", "shell.execute_reply": "2022-12-14T22:33:50.785988Z" }, "id": "wiScyBcef6Dq" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Calling model_fn.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Done calling model_fn.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Graph was finalized.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Restoring parameters from /tmpfs/tmp/tmps9yhceth/model.ckpt-200\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Running local_init_op.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Done running local_init_op.\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAGzCAYAAAA1yP25AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAyrklEQVR4nO3deXQUVf7//1eHkIaQdFizfQkEAgiCkWMcMbITlG1YFEcUlcAguARFMg6KOsPmGMSPiCj7KFFHRHDBcQNli6KgEkAUh7DIpoSAIAkE6YT0/f3hoX+0CSFpknRXfD7OqTPUrVu33+mS6Re3b1VsxhgjAAAACwrwdQEAAADeIsgAAADLIsgAAADLIsgAAADLIsgAAADLIsgAAADLIsgAAADLIsgAAADLIsgAAADLIsgA1dC6detks9m0bt06d9vw4cMVGxvrs5p+r6QafS09PV02m02bNm2qsDG7deumdu3aXbTfvn37ZLPZlJ6e7m6bNGmSbDabR7/Y2FgNHz68zK/drVu3clQLWA9BBkCpnnzySS1fvtzXZeACvv/+e02aNEn79u3zdSmATwT6ugAAVWPhwoVyuVzlPu/JJ5/UzTffrEGDBlV8UXBr2rSpfv31V9WsWbPUfllZWQoI+P//Dfr9999r8uTJ6tatW7EZt48//rgySgX8CkEG8CMul0sFBQWqVatWhY99sQ/I6qgy38+KZrPZylSn3W4v85hBQUGXUhJgCXy1BFSwc+saduzYoVtuuUUOh0MNGjTQ2LFjdebMGY++NptNY8aM0Wuvvaa2bdvKbrdrxYoVkqSffvpJf/3rXxURESG73a62bdvqpZdeKvZ6P/74owYNGqQ6deooPDxc48aNk9PpLNavpDUyLpdLzz33nK644grVqlVLjRo1Uu/evd1rRGw2m/Lz8/Xyyy/LZrPJZrN5rM+o6Bor8/3csmWL+vTpI4fDoZCQECUlJWnjxo0lvubp06d19913q0GDBnI4HBo2bJh++eUXjz7vvvuu+vXrp+joaNntdsXFxWnq1KkqKioqcczMzExdd911ql27tpo1a6Z58+Z5HC9pjUxJzl8jk56err/85S+SpO7du7uv0bl1RyWtkXE6nZo4caJatGghu92umJgYjR8/vtj1+OSTT9SpUyfVrVtXISEhuuyyy/Too4+WWhvgC8zIAJXklltuUWxsrNLS0rRx40bNmjVLv/zyi1555RWPfmvWrNHSpUs1ZswYNWzYULGxscrJydG1117r/mBu1KiRPvroI40cOVJ5eXl68MEHJUm//vqrkpKSdODAAT3wwAOKjo7Wq6++qjVr1pSpxpEjRyo9PV19+vTRXXfdpbNnz+qzzz7Txo0bdfXVV+vVV1/VXXfdpWuuuUajR4+WJMXFxUlSldVYEe/n9u3b1blzZzkcDo0fP141a9bU/Pnz1a1bN2VkZKhDhw4eY4wZM0Z169bVpEmTlJWVpblz52r//v3uBcrSbyEiJCREqampCgkJ0Zo1a/TPf/5TeXl5evrppz3G++WXX9S3b1/dcsstuu2227R06VLde++9CgoK0l//+tdyvQ/n69Klix544AHNmjVLjz76qNq0aSNJ7v/9PZfLpQEDBmj9+vUaPXq02rRpo2+//VbPPvusdu7c6V4LtX37dv35z39WfHy8pkyZIrvdrt27d+vzzz/3ulag0hgAFWrixIlGkhkwYIBH+3333WckmW+++cbdJskEBASY7du3e/QdOXKkiYqKMj///LNH+6233mrCwsLM6dOnjTHGzJw500gyS5cudffJz883LVq0MJLM2rVr3e3JycmmadOm7v01a9YYSeaBBx4o9jO4XC73n+vUqWOSk5OL9amMGktSEe/noEGDTFBQkNmzZ4+77dChQyY0NNR06dLF3bZo0SIjySQkJJiCggJ3+/Tp040k8+6777rbzv1857v77rtNcHCwOXPmjLuta9euRpJ55pln3G1Op9O0b9/ehIeHu19n7969RpJZtGhRsZ/9fE2bNvW4HsuWLbvg+9i1a1fTtWtX9/6rr75qAgICzGeffebRb968eUaS+fzzz40xxjz77LNGkjl69GixMQF/w1dLQCVJSUnx2L///vslSR9++KFHe9euXXX55Ze7940xeuutt9S/f38ZY/Tzzz+7t169eik3N1ebN292jxUVFaWbb77ZfX5wcLB79qQ0b731lmw2myZOnFjs2O9v+f29qqrxfN6+n0VFRfr44481aNAgNW/e3N0eFRWloUOHav369crLy/MYY/To0R5riu69914FBgZ6vFbt2rXdfz558qR+/vlnde7cWadPn9aOHTs8xgsMDNTdd9/t3g8KCtLdd9+tI0eOKDMzs8zvwaVatmyZ2rRpo9atW3tcsx49ekiS1q5dK0mqW7eupN++PvNmgThQlQgyQCVp2bKlx35cXJwCAgKK3SbbrFkzj/2jR4/qxIkTWrBggRo1auSxjRgxQpJ05MgRSdL+/fvVokWLYsHjsssuu2h9e/bsUXR0tOrXr1/eH63Kajzfpbyfp0+fLvH12rRpI5fLpYMHD5b6WiEhIYqKivJ4re3bt+vGG29UWFiYHA6HGjVqpDvuuEOSlJub63F+dHS06tSp49HWqlUrSarS26Z37dql7du3F7tm52o5d82GDBmijh076q677lJERIRuvfVWLV26lFADv8QaGaCKXGiW4/x/2Utyf1jccccdSk5OLvGc+Pj4ii2unPyhxrK+n5XhxIkT6tq1qxwOh6ZMmaK4uDjVqlVLmzdv1sMPP+y3H/gul0tXXHGFZsyYUeLxmJgYSb+9h59++qnWrl2rDz74QCtWrNAbb7yhHj166OOPP1aNGjWqsmygVAQZoJLs2rXLY3Zg9+7dcrlcF326bqNGjRQaGqqioiL17Nmz1L5NmzbVd999J2OMxwd7VlbWReuLi4vTypUrdfz48VJnZUoKDFVV4/ku5f0MDg4u8fV27NihgIAA9wf4+a/VvXt39/6pU6eUnZ2tvn37SvrtqcTHjh3T22+/rS5durj77d27t8QaDh06pPz8fI9ZmZ07d0rSJT9t+WJfA54vLi5O33zzjZKSki56XkBAgJKSkpSUlKQZM2boySef1GOPPaa1a9de9JoDVYmvloBKMnv2bI/9559/XpLUp0+fUs+rUaOGBg8erLfeekvfffddseNHjx51/7lv3746dOiQ3nzzTXfb6dOntWDBgovWN3jwYBljNHny5GLHjDHuP9epU0cnTpzwSY3nu5T384YbbtC7777r8TVOTk6OFi9erE6dOsnhcHics2DBAhUWFrr3586dq7Nnz7pf69yMxPnvU0FBgebMmVNiDWfPntX8+fM9+s6fP1+NGjVSQkJCqfVfzLlw9PtrVJJbbrlFP/30kxYuXFjs2K+//qr8/HxJ0vHjx4sdb9++vSSV+bZ5oKowIwNUkr1792rAgAHq3bu3NmzYoP/85z8aOnSorrzyyoueO23aNK1du1YdOnTQqFGjdPnll+v48ePavHmzVq1a5f6gGTVqlF544QUNGzZMmZmZioqK0quvvqrg4OCLvkb37t115513atasWdq1a5d69+4tl8ulzz77TN27d9eYMWMkSQkJCVq1apVmzJih6OhoNWvWTB06dKiSGivq/XziiSfcz0W57777FBgYqPnz58vpdGr69OnF+hcUFCgpKUm33HKLsrKyNGfOHHXq1EkDBgyQJF133XWqV6+ekpOT9cADD8hms+nVV1/1CDbni46O1lNPPaV9+/apVatWeuONN7R161YtWLDgkh9U2L59e9WoUUNPPfWUcnNzZbfb1aNHD4WHhxfre+edd2rp0qW65557tHbtWnXs2FFFRUXasWOHli5dqpUrV+rqq6/WlClT9Omnn6pfv35q2rSpjhw5ojlz5qhx48bq1KnTJdULVDhf3S4FVFfnbpn9/vvvzc0332xCQ0NNvXr1zJgxY8yvv/7q0VeSSUlJKXGcnJwck5KSYmJiYkzNmjVNZGSkSUpKMgsWLPDot3//fjNgwAATHBxsGjZsaMaOHWtWrFhx0duvjTHm7Nmz5umnnzatW7c2QUFBplGjRqZPnz4mMzPT3WfHjh2mS5cupnbt2kaSx62/FV1jZb6fmzdvNr169TIhISEmODjYdO/e3XzxxRcefc7dfp2RkWFGjx5t6tWrZ0JCQsztt99ujh075tH3888/N9dee62pXbu2iY6ONuPHjzcrV64s9jN17drVtG3b1mzatMkkJiaaWrVqmaZNm5oXXnjBYzxvb782xpiFCxea5s2bmxo1ani8/u9vvzbGmIKCAvPUU0+Ztm3bGrvdburVq2cSEhLM5MmTTW5urjHGmNWrV5uBAwea6OhoExQUZKKjo81tt91mdu7cWeJ7C/iSzZgL/BMCgFcmTZqkyZMn6+jRo2rYsKGvy7E83k8ApWGNDAAAsCyCDAAAsCyCDAAAsCzWyAAAAMtiRgYAAFgWQQYAAFhWtX8gnsvl0qFDhxQaGlquR3kDAADfMcbo5MmTio6OVkDAheddqn2QOXToULHfowIAAKzh4MGDaty48QWPV/sgExoaKum3N+L3v08FAAD4p7y8PMXExLg/xy+k2geZc18nORwOggwAABZz0d/UXkV1AAAAVDiCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsCyCDAAAsKxAXxeAksU+8kGljb1vWr9KGxsAgKrEjAwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsggwAALAsvwky06ZNk81m04MPPuhuO3PmjFJSUtSgQQOFhIRo8ODBysnJ8V2RAADAr/hFkPn66681f/58xcfHe7SPGzdO7733npYtW6aMjAwdOnRIN910k4+qBAAA/sbnQebUqVO6/fbbtXDhQtWrV8/dnpubqxdffFEzZsxQjx49lJCQoEWLFumLL77Qxo0bfVgxAADwFz4PMikpKerXr5969uzp0Z6ZmanCwkKP9tatW6tJkybasGHDBcdzOp3Ky8vz2AAAQPUU6MsXX7JkiTZv3qyvv/662LHDhw8rKChIdevW9WiPiIjQ4cOHLzhmWlqaJk+eXNGlAgAAP+SzGZmDBw9q7Nixeu2111SrVq0KG3fChAnKzc11bwcPHqywsQEAgH/xWZDJzMzUkSNHdNVVVykwMFCBgYHKyMjQrFmzFBgYqIiICBUUFOjEiRMe5+Xk5CgyMvKC49rtdjkcDo8NAABUTz77aikpKUnffvutR9uIESPUunVrPfzww4qJiVHNmjW1evVqDR48WJKUlZWlAwcOKDEx0RclAwAAP+OzIBMaGqp27dp5tNWpU0cNGjRwt48cOVKpqamqX7++HA6H7r//fiUmJuraa6/1RckAAMDP+HSx78U8++yzCggI0ODBg+V0OtWrVy/NmTPH12UBAAA/YTPGGF8XUZny8vIUFham3NxcS62XiX3kg0obe9+0fpU2NgAAFaGsn98+f44MAACAtwgyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsnwaZObOnav4+Hg5HA45HA4lJibqo48+ch/v1q2bbDabx3bPPff4sGIAAOBPAn354o0bN9a0adPUsmVLGWP08ssva+DAgdqyZYvatm0rSRo1apSmTJniPic4ONhX5QIAAD/j0yDTv39/j/1//etfmjt3rjZu3OgOMsHBwYqMjPRFeQAAwM/5zRqZoqIiLVmyRPn5+UpMTHS3v/baa2rYsKHatWunCRMm6PTp06WO43Q6lZeX57EBAIDqyaczMpL07bffKjExUWfOnFFISIjeeecdXX755ZKkoUOHqmnTpoqOjta2bdv08MMPKysrS2+//fYFx0tLS9PkyZOrqnwAAOBDNmOM8WUBBQUFOnDggHJzc/Xmm2/q3//+tzIyMtxh5nxr1qxRUlKSdu/erbi4uBLHczqdcjqd7v28vDzFxMQoNzdXDoej0n6Oihb7yAeVNva+af0qbWwAACpCXl6ewsLCLvr57fMZmaCgILVo0UKSlJCQoK+//lrPPfec5s+fX6xvhw4dJKnUIGO322W32yuvYAAA4Df8Zo3MOS6Xy2NG5Xxbt26VJEVFRVVhRQAAwF/5dEZmwoQJ6tOnj5o0aaKTJ09q8eLFWrdunVauXKk9e/Zo8eLF6tu3rxo0aKBt27Zp3Lhx6tKli+Lj431ZNgAA8BM+DTJHjhzRsGHDlJ2drbCwMMXHx2vlypW6/vrrdfDgQa1atUozZ85Ufn6+YmJiNHjwYD3++OO+LBkAAPgRnwaZF1988YLHYmJilJGRUYXVAAAAq/G7NTIAAABlRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACWRZABAACW5dMgM3fuXMXHx8vhcMjhcCgxMVEfffSR+/iZM2eUkpKiBg0aKCQkRIMHD1ZOTo4PKwYAAP7Ep0GmcePGmjZtmjIzM7Vp0yb16NFDAwcO1Pbt2yVJ48aN03vvvadly5YpIyNDhw4d0k033eTLkgEAgB+xGWOMr4s4X/369fX000/r5ptvVqNGjbR48WLdfPPNkqQdO3aoTZs22rBhg6699toyjZeXl6ewsDDl5ubK4XBUZukVKvaRDypt7H3T+lXa2AAAVISyfn77zRqZoqIiLVmyRPn5+UpMTFRmZqYKCwvVs2dPd5/WrVurSZMm2rBhwwXHcTqdysvL89gAAED1FOjrAr799lslJibqzJkzCgkJ0TvvvKPLL79cW7duVVBQkOrWrevRPyIiQocPH77geGlpaZo8eXIlV/2bypw1qUyVVTczPQCAqubzGZnLLrtMW7du1Zdffql7771XycnJ+v77770eb8KECcrNzXVvBw8erMBqAQCAP/H5jExQUJBatGghSUpISNDXX3+t5557TkOGDFFBQYFOnDjhMSuTk5OjyMjIC45nt9tlt9sru2wAAOAHfD4j83sul0tOp1MJCQmqWbOmVq9e7T6WlZWlAwcOKDEx0YcVAgAAf+HTGZkJEyaoT58+atKkiU6ePKnFixdr3bp1WrlypcLCwjRy5Eilpqaqfv36cjgcuv/++5WYmFjmO5YAAED15tMgc+TIEQ0bNkzZ2dkKCwtTfHy8Vq5cqeuvv16S9OyzzyogIECDBw+W0+lUr169NGfOHF+WDAAA/IjfPUemolXmc2SsetdSZeGuJQBARbHcc2QAAADKiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsiyADAAAsy6sg88MPP1R0HQAAAOXmVZBp0aKFunfvrv/85z86c+ZMRdcEAABQJl4Fmc2bNys+Pl6pqamKjIzU3Xffra+++qqiawMAACiVV0Gmffv2eu6553To0CG99NJLys7OVqdOndSuXTvNmDFDR48ereg6AQAAirmkxb6BgYG66aabtGzZMj311FPavXu3HnroIcXExGjYsGHKzs4u9fy0tDT96U9/UmhoqMLDwzVo0CBlZWV59OnWrZtsNpvHds8991xK2QAAoJq4pCCzadMm3XfffYqKitKMGTP00EMPac+ePfrkk0906NAhDRw4sNTzMzIylJKSoo0bN+qTTz5RYWGhbrjhBuXn53v0GzVqlLKzs93b9OnTL6VsAABQTQR6c9KMGTO0aNEiZWVlqW/fvnrllVfUt29fBQT8louaNWum9PR0xcbGljrOihUrPPbT09MVHh6uzMxMdenSxd0eHBysyMhIb0oFAADVmFczMnPn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nTt3NgMHDqyaYqup8l4Dp9Nprr76atO3b1+zfv16s3fvXrNu3TqzdevWKq68einvdXjttdeM3W43r732mtm7d69ZuXKliYqKMuPGjaviyquPDz/80Dz22GPm7bffNpLMO++8U2r/H374wQQHB5vU1FTz/fffm+eff97UqFHDrFixotyvTZBBuV1zzTUmJSXFvV9UVGSio6NNWlpamc4/e/asCQ0NNS+//HJllfiH4M11OHv2rLnuuuvMv//9b5OcnEyQuUTlvQZz5841zZs3NwUFBVVV4h9Cea9DSkqK6dGjh0dbamqq6dixY6XW+UdRliAzfvx407ZtW4+2IUOGmF69epX79fhqCeVSUFCgzMxM9ezZ090WEBCgnj17asOGDWUa4/Tp0yosLFT9+vUrq8xqz9vrMGXKFIWHh2vkyJFVUWa15s01+O9//6vExESlpKQoIiJC7dq105NPPqmioqKqKrva8eY6XHfddcrMzHR//fTDDz/oww8/VN++faukZkgbNmzwuGaS1KtXrzJ/jpzP739FAfzLzz//rKKiomK/IiIiIkI7duwo0xgPP/ywoqOji/1HjLLz5jqsX79eL774orZu3VoFFVZ/3lyDH374QWvWrNHtt9+uDz/8ULt379Z9992nwsJCTZw4sSrKrna8uQ5Dhw7Vzz//rE6dOskYo7Nnz+qee+7Ro48+WhUlQ9Lhw4dLvGZ5eXn69ddfVbt27TKPxYwMqtS0adO0ZMkSvfPOO6pVq5avy/nDOHnypO68804tXLhQDRs29HU5f1gul0vh4eFasGCBEhISNGTIED322GOaN2+er0v7Q1m3bp2efPJJzZkzR5s3b9bbb7+tDz74QFOnTvV1afACMzIol4YNG6pGjRrKycnxaM/JyVFkZGSp5/7f//2fpk2bplWrVik+Pr4yy6z2ynsd9uzZo3379ql///7uNpfLJUkKDAxUVlaW4uLiKrfoasabvwtRUVGqWbOmatSo4W5r06aNDh8+rIKCAgUFBVVqzdWRN9fhH//4h+68807dddddkqQrrrhC+fn5Gj16tB577DEFBPBv/MoWGRlZ4jVzOBzlmo2RmJFBOQUFBSkhIUGrV692t7lcLq1evVqJiYkXPG/69OmaOnWqVqxYoauvvroqSq3WynsdWrdurW+//VZbt251bwMGDFD37t21detWxcTEVGX51YI3fxc6duyo3bt3u0OkJO3cuVNRUVGEGC95cx1Onz5dLKycC5eG36NcJRITEz2umSR98sknpX6OXFC5lwfjD2/JkiXGbreb9PR08/3335vRo0ebunXrmsOHDxtjjLnzzjvNI4884u4/bdo0ExQUZN58802TnZ3t3k6ePOmrH6FaKO91+D3uWrp05b0GBw4cMKGhoWbMmDEmKyvLvP/++yY8PNw88cQTvvoRqoXyXoeJEyea0NBQ8/rrr5sffvjBfPzxxyYuLs7ccsstvvoRLO/kyZNmy5YtZsuWLUaSmTFjhtmyZYvZv3+/McaYRx55xNx5553u/uduv/773/9u/ve//5nZs2dz+zWq1vPPP2+aNGligoKCzDXXXGM2btzoPta1a1eTnJzs3m/atKmRVGybOHFi1RdezZTnOvweQaZilPcafPHFF6ZDhw7Gbreb5s2bm3/961/m7NmzVVx19VOe61BYWGgmTZpk4uLiTK1atUxMTIy57777zC+//FL1hVcTa9euLfH/58+978nJyaZr167Fzmnfvr0JCgoyzZs3N4sWLfLqtW3GMI8GAACsiTUyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsggyAADAsv4/gw4fFlMnvvwAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pred_dicts = list(linear_est.predict(eval_input_fn))\n", "probs = pd.Series([pred['probabilities'][1] for pred in pred_dicts])\n", "\n", "probs.plot(kind='hist', bins=20, title='predicted probabilities')" ] }, { "cell_type": "markdown", "metadata": { "id": "UEHRCd4sqrLs" }, "source": [ "마지막으로, 수신자 조작 특성(receiver operating characteristic, ROC)을 살펴보면 정탐률(true positive rate)과 오탐률(false positive rate)의 상충관계에 대해 더 잘 이해할 수 있습니다." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "execution": { "iopub.execute_input": "2022-12-14T22:33:50.790925Z", "iopub.status.busy": "2022-12-14T22:33:50.790154Z", "iopub.status.idle": "2022-12-14T22:33:51.183485Z", "shell.execute_reply": "2022-12-14T22:33:51.182766Z" }, "id": "kqEjsezIokIe" }, "outputs": [ { "data": { "text/plain": [ "(0.0, 1.05)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.metrics import roc_curve\n", "from matplotlib import pyplot as plt\n", "\n", "fpr, tpr, _ = roc_curve(y_eval, probs)\n", "plt.plot(fpr, tpr)\n", "plt.title('ROC curve')\n", "plt.xlabel('false positive rate')\n", "plt.ylabel('true positive rate')\n", "plt.xlim(0,)\n", "plt.ylim(0,)" ] } ], "metadata": { "colab": { "collapsed_sections": [], "name": "linear.ipynb", "toc_visible": true }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.16" } }, "nbformat": 4, "nbformat_minor": 0 }