{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPython 3.5.6\n", "IPython 6.5.0\n", "\n", "sklearn 0.20.1\n", "numpy 1.15.2\n", "scipy 1.1.0\n", "matplotlib 3.0.0\n" ] } ], "source": [ "%load_ext watermark\n", "%watermark -v -p sklearn,numpy,scipy,matplotlib" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "hide_input": false }, "outputs": [], "source": [ "%matplotlib inline\n", "from preamble import *" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 알고리즘 체인과 파이프라인" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "from sklearn.svm import SVC\n", "from sklearn.datasets import load_breast_cancer\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.preprocessing import MinMaxScaler\n", "\n", "# 데이터 적재와 분할\n", "cancer = load_breast_cancer()\n", "X_train, X_test, y_train, y_test = train_test_split(\n", " cancer.data, cancer.target, random_state=0)\n", "\n", "# 훈련 데이터의 최솟값, 최댓값을 계산합니다\n", "scaler = MinMaxScaler().fit(X_train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "사이킷런 0.20 버전에서 `SVC` 클래스의 `gamma` 매개변수 옵션에 `auto`외에 `scale`이 추가되었습니다. `auto`는 `1/n_features`, 즉 특성 개수의 역수입니다. `scale`은 `1/(n_features * X.std())`로 스케일 조정이 되지 않은 특성에서 다 좋은 결과를 만듭니다. 사이킷런 0.22 버전부터는 `gamma` 매개변수의 기본값이 `auto`에서 `scale`로 변경됩니다. 서포트 벡터 머신을 사용하기 전에 특성을 표준화 전처리하면 `scale`과 `auto`는 차이가 없습니다. 경고를 피하기 위해 명시적으로 `auto` 옵션을 지정합니다." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "테스트 점수: 0.95\n" ] } ], "source": [ "# 훈련 데이터의 스케일을 조정합니다\n", "X_train_scaled = scaler.transform(X_train)\n", "\n", "svm = SVC(gamma='auto')\n", "# 스케일 조정된 훈련데이터에 SVM을 학습시킵니다\n", "svm.fit(X_train_scaled, y_train)\n", "# 테스트 데이터의 스케일을 조정하고 점수를 계산합니다\n", "X_test_scaled = scaler.transform(X_test)\n", "print(\"테스트 점수: {:.2f}\".format(svm.score(X_test_scaled, y_test)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 데이터 전처리와 매개변수 선택" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "최상의 교차 검증 정확도: 0.98\n", "테스트 점수: 0.97\n", "최적의 매개변수: {'gamma': 1, 'C': 1}\n" ] } ], "source": [ "from sklearn.model_selection import GridSearchCV\n", "# 이 코드는 예를 위한 것입니다. 실제로 사용하지 마세요.\n", "param_grid = {'C': [0.001, 0.01, 0.1, 1, 10, 100],\n", " 'gamma': [0.001, 0.01, 0.1, 1, 10, 100]}\n", "grid = GridSearchCV(SVC(), param_grid=param_grid, cv=5)\n", "grid.fit(X_train_scaled, y_train)\n", "print(\"최상의 교차 검증 정확도: {:.2f}\".format(grid.best_score_))\n", "print(\"테스트 점수: {:.2f}\".format(grid.score(X_test_scaled, y_test)))\n", "print(\"최적의 매개변수: \", grid.best_params_)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "hide_input": false }, "outputs": [ { "data": { "application/pdf": "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Rm9udERlc2NyaXB0b3IgMTMgMCBSCi9Gb250TWF0cml4IFsgMC4wMDEgMCAwIDAuMDAxIDAgMCBdIC9MYXN0Q2hhciAyNTUgL05hbWUgL05hbnVtQmFydW5Hb3RoaWMKL1N1YnR5cGUgL1R5cGUzIC9UeXBlIC9Gb250IC9XaWR0aHMgMTIgMCBSID4+CmVuZG9iagoxMyAwIG9iago8PCAvQXNjZW50IDg1MCAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTI5OSAvRmxhZ3MgMzIKL0ZvbnRCQm94IFsgLTQ1IC0yODcgMTAwMCA4MzggXSAvRm9udE5hbWUgL05hbnVtQmFydW5Hb3RoaWMgL0l0YWxpY0FuZ2xlIDAKL01heFdpZHRoIDEwNTIgL1N0ZW1WIDAgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9YSGVpZ2h0IDAgPj4KZW5kb2JqCjEyIDAgb2JqClsgODkyIDIyNCA4OTIgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgODkyIDg5MiAyMjQgMjI0IDg5MiAyMjQgMjI0IDIyNCAyMjQKMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgNDQ2IDI5NyA1ODMgNTgzCjg5MiA4OTIgMjk3IDQ0NiA0NDYgNDQ2IDU4MyAyOTcgNTgzIDI5NyA0NDYgNTgzIDU4MyA1ODMgNTgzIDU4MyA1ODMgNTgzIDU4Mwo1ODMgNTgzIDI5NyAyOTcgNDQ2IDU4MyA0NDYgNjY5IDEwNTIgNjQ0IDYyNyA2MzkgNzIxIDU5NiA1NTQgNzEwIDcxOCAyNDcKNDEwIDYyNiA1MjkgODg0IDcxMCA3NTIgNTg2IDc1MiA2MTAgNTkyIDYyMSA2OTYgNjM1IDk2MSA2MTcgNjExIDU5NCA0NDYgOTYxCjQ0NiA0MzQgNDQ2IDI5NyA1NjAgNTg4IDQ5MCA1ODggNTU5IDM0MCA1ODggNTkyIDI0NCAzMDEgNTMwIDI0NCA4OTIgNTkyIDU3Nwo1ODggNTg4IDM4MyA0NzUgMzU3IDU5MiA1MzAgNzg4IDUyOCA1MzAgNDczIDQ0NiA0NDYgNDQ2IDY2OSAyMjQgODkyIDIyNCAyMjQKMjI0IDIyNCA4OTIgODkyIDg5MiAyMjQgODkyIDIyNCA4OTIgODkyIDIyNCAyMjQgMjI0IDIyNCAzMDMgMzAzIDQ0NiA0NDYgODkyCjg5MiA4OTIgODkyIDg5MiAyMjQgODkyIDg5MiAyMjQgMjI0IDIyNCAyOTcgODkyIDg5MiA4OTIgODkyIDg5MiAyMjQgNDQ2IDg5Mgo4OTIgODkyIDg5MiA4OTIgODkyIDg5MiAyMjQgNDQ2IDg5MiA0NDYgNDQ2IDg5MiAyMjQgODkyIDQ0NiA0NDYgNDQ2IDg5MiA4OTIKODkyIDg5MiA4OTIgODkyIDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDg5MiAyMjQgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0CjIyNCA4OTIgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgODkyIDg5MiAyMjQgMjI0IDIyNCAyMjQgMjI0IDg5MiA4OTIgMjI0IDIyNAoyMjQgMjI0IDIyNCAyMjQgODkyIDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDg5MiAyMjQgMjI0IDIyNCAyMjQKMjI0IDIyNCA4OTIgODkyIDIyNCAyMjQgMjI0IDIyNCAyMjQgODkyIDIyNCBdCmVuZG9iagoxNSAwIG9iago8PCAvY2lkMSAxNiAwIFIgL2NpZDM2IDMxIDAgUiAvY2lkNTIgMzIgMCBSIC9jaWQ1NSAzMyAwIFIgL2NpZDY2IDM0IDAgUgovY2lkNjggMzUgMCBSIC9jaWQ2OSAzNiAwIFIgL2NpZDcwIDM3IDAgUiAvY2lkNzEgMzggMCBSIC9jaWQ3NCAzOSAwIFIKL2NpZDc3IDQwIDAgUiAvY2lkODEgNDEgMCBSIC9jaWQ4MyA0MiAwIFIgL2NpZDg0IDQzIDAgUiAvY2lkODUgNDQgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAxNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0ExIDw8IC9DQSAwIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EyIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4gPj4KZW5kb2JqCjQ1IDAgb2JqCjw8IC9CQm94IFsgMCAwIDcyIDcyIF0gL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAxNTIKL01hdHJpeCBbIDEgMCAwIDEgMCA0NzkuODkwMzIwNjUyMiBdIC9QYWludFR5cGUgMSAvUGF0dGVyblR5cGUgMQovUmVzb3VyY2VzIDw8IC9Qcm9jc2V0cyBbIC9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUkgXSA+PgovVGlsaW5nVHlwZSAxIC9UeXBlIC9QYXR0ZXJuIC9YU3RlcCA3MiAvWVN0ZXAgNzIgPj4Kc3RyZWFtCnicJY8xDsMwDAN3vYIfEOA4iuKsXbrnD22XeMnS75dUIcKAKetENzTW+bQFqvtT971L9wtv+l8zXxPUNB5LG7joNFDTotPpcnqAojNwpIxlgJq2BY5WBt92GtkwQkZC0EzsYmrztP/uyxKuJjspGge9hjmZohHthSd7E43LvQJwe4jHfF4ZFTDEZHyvf+gTq7D2sB8lszEcCmVuZHN0cmVhbQplbmRvYmoKNDYgMCBvYmoKPDwgL0JCb3ggWyAwIDAgNzIgNzIgXSAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDE2MgovTWF0cml4IFsgMSAwIDAgMSAwIDQ3OS44OTAzMjA2NTIyIF0gL1BhaW50VHlwZSAxIC9QYXR0ZXJuVHlwZSAxCi9SZXNvdXJjZXMgPDwgL1Byb2NzZXRzIFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdID4+Ci9UaWxpbmdUeXBlIDEgL1R5cGUgL1BhdHRlcm4gL1hTdGVwIDcyIC9ZU3RlcCA3MiA+PgpzdHJlYW0KeJx1jzEOwzAMA3e9gh9wITuK4qxdsvcPbZd4ydLvl3TnwoQBU9aJcjjP4zC/rV739K3Hgv+P6z0btiZdT7ys4mNWlgQ1jFf1jpOOgxoWjU6T0wIUnY49ZdQOatga2H0a/NtopKOHjISgmdjE1ORhv9mnJYqKrKRobCyzmZ0pGtFl4sleRePwMgNweojHfGVmVMAQk/HL3ENLLMLa3b5HkDfECmVuZHN0cmVhbQplbmRvYmoKNSAwIG9iago8PCAvSDEgNDUgMCBSIC9IMiA0NiAwIFIgPj4KZW5kb2JqCjYgMCBvYmoKPDwgPj4KZW5kb2JqCjcgMCBvYmoKPDwgL05hbnVtQmFydW5Hb3RoaWMtY2lkMTEyOCAxNyAwIFIgL05hbnVtQmFydW5Hb3RoaWMtY2lkMTE5OCAxOCAwIFIKL05hbnVtQmFydW5Hb3RoaWMtY2lkMTYyNCAxOSAwIFIgL05hbnVtQmFydW5Hb3RoaWMtY2lkMTc3OCAyMCAwIFIKL05hbnVtQmFydW5Hb3RoaWMtY2lkMjI0MSAyMSAwIFIgL05hbnVtQmFydW5Hb3RoaWMtY2lkMjMzMyAyMiAwIFIKL05hbnVtQmFydW5Hb3RoaWMtY2lkMjUyMCAyMyAwIFIgL05hbnVtQmFydW5Hb3RoaWMtY2lkMjc2OCAyNCAwIFIKL05hbnVtQmFydW5Hb3RoaWMtY2lkMjg2NCAyNSAwIFIgL05hbnVtQmFydW5Hb3RoaWMtY2lkMjk1OSAyNiAwIFIKL05hbnVtQmFydW5Hb3RoaWMtY2lkMzExNCAyNyAwIFIgL05hbnVtQmFydW5Hb3RoaWMtY2lkMzE2NyAyOCAwIFIKL05hbnVtQmFydW5Hb3RoaWMtY2lkMzI0MyAyOSAwIFIgL05hbnVtQmFydW5Hb3RoaWMtY2lkMzM3OSAzMCAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0NvdW50IDEgL0tpZHMgWyAxMCAwIFIgXSAvVHlwZSAvUGFnZXMgPj4KZW5kb2JqCjQ3IDAgb2JqCjw8IC9DcmVhdGlvbkRhdGUgKEQ6MjAxODExMjYxNzI3MjQrMDknMDAnKQovQ3JlYXRvciAobWF0cGxvdGxpYiAzLjAuMCwgaHR0cDovL21hdHBsb3RsaWIub3JnKQovUHJvZHVjZXIgKG1hdHBsb3RsaWIgcGRmIGJhY2tlbmQgMy4wLjApID4+CmVuZG9iagp4cmVmCjAgNDgKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMTU3NjYgMDAwMDAgbiAKMDAwMDAxNDIyOCAwMDAwMCBuIAowMDAwMDE0MjYwIDAwMDAwIG4gCjAwMDAwMTUyMTkgMDAwMDAgbiAKMDAwMDAxNTI2MiAwMDAwMCBuIAowMDAwMDE1MjgzIDAwMDAwIG4gCjAwMDAwMDAwNjUgMDAwMDAgbiAKMDAwMDAwMDM5OCAwMDAwMCBuIAowMDAwMDAwMjA4IDAwMDAwIG4gCjAwMDAwMDE4NTcgMDAwMDAgbiAKMDAwMDAxMjk1MiAwMDAwMCBuIAowMDAwMDEyNzQ5IDAwMDAwIG4gCjAwMDAwMTIzMDkgMDAwMDAgbiAKMDAwMDAxMzk5NyAwMDAwMCBuIAowMDAwMDAxODc4IDAwMDAwIG4gCjAwMDAwMDE5NjcgMDAwMDAgbiAKMDAwMDAwMjMyNyAwMDAwMCBuIAowMDAwMDAyNjIyIDAwMDAwIG4gCjAwMDAwMDI4MjUgMDAwMDAgbiAKMDAwMDAwMzE0MCAwMDAwMCBuIAowMDAwMDAzNDg5IDAwMDAwIG4gCjAwMDAwMDM4MjMgMDAwMDAgbiAKMDAwMDAwNDM0NiAwMDAwMCBuIAowMDAwMDA1MTAwIDAwMDAwIG4gCjAwMDAwMDU1MTggMDAwMDAgbiAKMDAwMDAwNTk2NCAwMDAwMCBuIAowMDAwMDA2Mjg0IDAwMDAwIG4gCjAwMDAwMDY1MDAgMDAwMDAgbiAKMDAwMDAwNjc3NiAwMDAwMCBuIAowMDAwMDA3MzgyIDAwMDAwIG4gCjAwMDAwMDc3NzQgMDAwMDAgbiAKMDAwMDAwODM0OCAwMDAwMCBuIAowMDAwMDA4NTAxIDAwMDAwIG4gCjAwMDAwMDkwMDAgMDAwMDAgbiAKMDAwMDAwOTQyMSAwMDAwMCBuIAowMDAwMDA5ODQ0IDAwMDAwIG4gCjAwMDAwMTAyNTcgMDAwMDAgbiAKMDAwMDAxMDU0NCAwMDAwMCBuIAowMDAwMDEwNzY0IDAwMDAwIG4gCjAwMDAwMTA4ODggMDAwMDAgbiAKMDAwMDAxMTI4OSAwMDAwMCBuIAowMDAwMDExNTYwIDAwMDAwIG4gCjAwMDAwMTIwMzYgMDAwMDAgbiAKMDAwMDAxNDM1OSAwMDAwMCBuIAowMDAwMDE0Nzg0IDAwMDAwIG4gCjAwMDAwMTU4MjYgMDAwMDAgbiAKdHJhaWxlcgo8PCAvSW5mbyA0NyAwIFIgL1Jvb3QgMSAwIFIgL1NpemUgNDggPj4Kc3RhcnR4cmVmCjE1OTgwCiUlRU9GCg==\n", "image/png": "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0dpKayvHnGjUuXNnS09P96y/9PT0sPvjWEmjRVeL+ABotPba6vpB58c//rFJsm+++abWTKXDhw9bYmKi9ezZs9bMhAkTTJJ9+eWXgWWXX365SbJnnnmmzv43bdpU53pJNnLkyHrHaUZxRaNFsrWVY040orii0WiVjWeugCiUlJQkSfryyy/rzSYkJGj06NHavHmzPv7446D1paWleu2113TWWWepX79+kqT169dr4cKFGjZsmCZOnFhn/z179gy5PCMjI3Ab4NKlS+Wck3NOTz31lCQpOzs7sL6wsFDOOV177bWSpGuvvTaQLywsrPc9AmhereGYI0lTpkyRc05FRUV64okndPrppys+Pl4nn3yypk+frp07d1bLZ2RkKDk5WVu3blVeXp6SkpLknNPq1asDmffee085OTnq2rWrfD6ffvCDH+juu+8O+exXQUGBhg4dqsTERKWmpmrSpEnatm1byLE655SdnR20vKioSNOnT1evXr3k8/nUq1cv5eXlaeXKlYHj5saNG7Vx48bAcTJUPwCiE8UVEIWGDRsmSbr++uv12Wef1ZvPzc2VJL388stB65YuXap9+/Zp3LhxgWWvvvqqzEyTJ09u9Bhvu+025efnS5L69Omj/Px85efna8iQIUHZvn37Kj8/XxMmTJAkTZgwIZDv27dvo8cAwBut4ZhT1ezZszVz5kyNGjVKt99+u/r166fHHntMw4cP14EDB6ply8rKdOGFF2rdunW65ZZbNH36dCUmJkqS5s+fr2HDhmn58uW66qqrdPPNNys5OVmzZ89WXl5etX4eeeQR5ebmauvWrZo5c6ZmzJihd999V1lZWTp69GhY4162bJkyMzP15JNPKisrS3PmzNHYsWNVVFSkn/70p5oxY4by8/OVkpKilJSUwHFyxowZnnzdALSASF86o9Haa1Mdt+gcPXrUzj77bJNkMTExlpeXZx988EGt+f3791tcXJz98Ic/DFo3Y8YMk2Qff/xxYNnkyZODljWWarktcOTIkVbzPXJbII0WudYWjjnXXHONSbLExERbvnx5tXWV+5g9e3ZgWXp6ukmyoUOHWnFxcbX8V199ZT6fz/r162fffvttYHl5ebn95Cc/MUm2cOFCMzPbsmWL+Xw+y8jIsF27dgWye/futUGDBpmkoNv4ah4b9+7dayeeeKIlJibaihUrgt7ba6+9Vm3c3BZIo7XOxpUrIArFxcVp6dKlmjp1qiTpxRdf1ODBg5Wbm6v169cH5Tt16qQLLrhAH3/8sTZv3lxt3aJFi9SrV69qs/NV3jrTrVu3ZnwXAFqL1nbMmTZtWuBqW6U77rhDsbGxev7554Py999/f+BqVaWHH35YJSUleuyxx5SWlhZY7pzTnDlzJEkvvPCCJGnBggUqKSnRrbfeqq5duwayycnJevDBB8Ma8x/+8Ad99913mj59urKysoLWjx49Oqx+AEQ3iisgSiUmJuqJJ57QZ599puuuu04dO3ZUQUGBBg0apDfffDMoX3mbzqJFiwLLVq1apU2bNgXWVSovL2/ewQNodVrTMafmLXuSlJ6erlNPPVVff/21Dh06FFgeFxenoUOHBuXffPNNJSUlKSMjQ0VFRdVahw4dFBsbG5h+/p133pEkXXzxxUH9ZGVlKTY2tt4xL1myRJICz54CaJsoroAod9ppp+n3v/+9Pv/8cw0bNkwHDx5UXl6etm/fXi2Xk5OjmJiYas9AVP696rMPkgK/ed29e3czjx5Aa9Majjm9e/cOufzkk0+WJO3bty+wLC0tTTExMUHZjRs36uDBg+rTp4969epVrfXu3VtlZWXav39/IBsTExPov6q4uLigq2KhVE5Q0adPn7DeI4DWqf5ftQCICn379tXbb7+tc889V6tXr9aCBQt00003BdanpqZq+PDhKiws1IEDB9SpUye9/PLLSktLC7oFpX///pKkNWvWKDMzs0XfB4DWIZqPOXFxcXWuj4+PD/y96oebV2Vm6tGjR50f8nvCCSdIko4ePaoOHTrIzEL2Zxb6w5mrKi8vl3NOHTrwe22gLeN/ONCKxMXFadKkSZKkb775Jmh9bm5uYBrkoqIiffLJJ8rJyQk6mVfe2hJqpi8AqBStx5zDhw+HXL5hwwYlJiaqS5cu9fZx0kknad++fRo7dqxycnJCtspxp6SkqLS0VN99911QP8XFxUEzFIaSlpam8vJybdy4sd4sgNaL4gqIQps2bap1XeUPFampqUHrcnNz5ZzTokWLAs9B1Hz2QZIGDRqk4cOHq6CgQB9++GGdY1m1alVDhg6gFWptx5wPPvggaNn69ev11VdfaejQoWFdHcrOztaRI0e0YsWKerMDBgyQJL399ttB65YtW1bv9pI0fPhwSf7JMQC0YZGerpBGa69NdUyLnJmZaX/961+DlhcXF9vpp59ukmzlypUhtx08eLClpKRYdna2JScn27Fjx0LmPv/8czvhhBMsLS3N3nvvvaD1paWldtddd4WcarkqNWAq9oULF5okmzt3bmBZeXl5rf1aFPw70WhtpbWFY07lVOxnnnmm7dmzJ7C8rKzMxowZY5LsueeeCyyva0rzNWvWWGxsrA0cOND27t0btP7111+3d99918zM3nrrLZNk/fv3t0OHDgUyO3futP79+4c1FfumTZssISHBOnXqZB999FHQ/p555pnA3zMzM61Lly61Hh9r7sei4PuLRqP5G89cAVHo2LFjGjNmjM477zxlZ2erU6dO2rp1q1588UV9++23mjVrlgYPHhxy29zcXN1yyy0qLCzUpEmT1LFjx5C5M844Q6+//rrGjRunrKwsnX/++TrvvPOUlJSkzZs3a9GiRdq0aVPgg3+9MGDAAMXExOjuu+/W2rVrtWPHDqWlpenRRx/1bB8AGq61HXN2796tzMxMXXnllUpJSVFBQYFWrVqlcePGafz48WG95/79++vhhx/WjBkzdNppp2n8+PE65ZRTtGvXLr311lv68MMPA1Oxjxo1SldddZWef/55nX322Zo4caJKSko0f/58derUKaz99ezZU/PmzdPkyZOVlZWlvLw8ZWZm6vDhw3rllVe0f/9+TZw4UZL/St+aNWv0ox/9SOnp6Vq2bJkWL16s9PT0sPYFIIIiXd3RaO21qY7fIm/bts1mzZplZ511liUmJlpMTIx169bNRo8ebS+99FKt25mZffnllybJJFlBQUGdWTOz3bt322233WYDBw60pKQki4uLs549e9rll19e777M/0bCvnJlZvb4449bnz59LD4+3nr16mXPPvtsrf1aFPw70WhtpbWFY07llauVK1falClTLDU11eLj4+2MM86w+++/30pLS6vlw/kw3uXLl9vYsWOta9euFh8fb+np6TZq1CibN29etStHx44ds7vuustOPfVUi4uLs9TUVLv66qtt69atYV25qrRmzRqbPHmy9ezZM/Dec3JybNWqVYHMli1bbMyYMZacnGxJSUk2ZswY279/f8jxc6yk0aKrObP6Z7gB4D3nnPH/r3bOOZlZ6Gm+ADRYWzjmTJkyRU8//bQ2bNigjIyMSA8nKnCsBKILE1oAAAAAgAcorgAAAADAAxRXAAAAAOABiisAAAAA8AATWgAR0hYeLm9OPKQNeItjTtvEsRKILly5AgAAAAAPUFwBAAAAgAcorgAAAADAAxRXAAAAAOCB2EgPAGivfD7fDudc90iPI1r5fL4dkR4D0JZwzGmbOFYC0YXZAgFIkhxTiQFoIzieAYgUbgsEIOfcQknvOuc4JgBo1Zxzv5H0jXOuU6THAqD94coVADnnDkr6nqROZnYw0uMBgMZyzn0kaZCkc8zso0iPB0D7wm+pAQAAAMADFFcAAAAA4AGKKwAAAADwAMUVAAAAAHiA4goAAAAAPEBxBQAAAAAeoLgCAAAAAA9QXAEAAACAByiuAAAAAMADFFcAAAAA4AGKKwAAAADwAMUVAAAAAHiA4goAAAAAPEBxBQAAAAAeiPWqI+fcVEmXedUfgBb1vYo/X3HOHYzoSAA0xjtmdm9TOnDOjZE0Va3/F6+DKv58xTn3UURH0nTrJc0ys/JIDwRAeJyZedORc3slJXvSGQAAaKhEMzvc2I2dc+9LGuLheOCNgWb2SaQHASA8nl25qtLXVZIafXAHEBFpknySiiI8DgAN99/y//+NaWI/lefxn8t/xaS16izpJEmfR3ogTTRXUm95+7MagGbWHP9h/2Zm3FYEAEALcM6VedzlMjNr7bfTtXrOuTmRHgOAhmvt91UDAAAAQFTwsrj6VtI+SSUe9gkAAOrm1fn3W0kmaUeTRwQv8O8BtEJeTmiRJslnZkWedAgAAOrl1fnXOddZ0klm1tqfVWoT+PcAWifPiisAAAAAaM945goAAAAAPEBxBQAAAAAeoLgCAAAAAA9QXAEAAACAByiuAAAAAMADFFcAAAAA4AGKKwAAAADwAMUVAAAAAHiA4goAAAAAPEBxBQAAAAAeoLgCAAAAAA9QXAEAAACAByiuAAAAAMADFFcAAAAA4AGKKwAAAADwAMUVAAAAAHggNtIDANC2JCQkbC8pKeke6XG0ZT6fb8eRI0fSIj0OAABQnTOzSI8BQBvinDOOK83LOSczc5EeBwAAqI7bAgEAAADAAxRXAAAAAOABiisAAAAA8ADFFQAAAAB4gOIKAJpZaWmpvv32W5WXl0d6KAAAoBlRXAFoF5xzys7ObtF9btmyRWPGjJHP59P3v/99XX311Tp06JD69++vAQMG6NChQy06HgAA0Lz4nCsAaCaTJ0/W3//+d82aNUuDBw9WYmKiPvvsM/3jH/+QJH3++ecaPHhwhEcJAAC8QnEFAM3gyJEjWrp0qUaMGKH7778/sPzYsWPKzc1Vhw4dNHDgwMDywsJCFRYWasqUKcrIyIjAiAEAQFNRXAFAM/juu+9UXl4eVCjFxcXpL3/5S1C+sLBQt99+u7KzsymuAABopXjmCgCagZlJ8j/rBQAA2geKKwAtav78+Ro8eLA6d+6sE088USNGjNATTzyh48ePV8vt3LlTN910k0477TT5fD6dfPLJuvTSS/XGG28EMlu2bNHNN9+sM888UwkJCTrhhBN07rnnatGiRWGPZ+3atbr66quVlpam+Ph49enTRzfffLMOHjxYLZeRkaHk5GRt3bpVeXl5SkpKknNOq1evDurTOadevXpJkp5++mk55+ScU2FhYaCvyqtTTz31lJxzuv322yVJ559/fiBfVFQU9vsAAACRx22BAFrM448/rmnTpumcc87RzTffrKNHj+qtt97Sz372M3Xu3Fnjx4+X5J/o4cILL9T27ds1ZswYXXPNNdq7d69Wrlyp8ePHa+/evTp8+LB69+6thIQEjRs3TpMmTdKePXv09NNPa9y4cXr//fd1zjnn1DmeJUuW6LLLLpNzThMmTNApp5yid999V/fee6/efvttLV++XPHx8YF8WVmZLrzwQsXGxuqWW27Rli1blJiYGNRvfn6+9uzZozvvvFODBw/WxIkTJUl9+/YNyg4ZMkT5+flavHixXn/9dd1www2BXJcuXRr9tQYAABFgZjQajeZZ8x9WQjv33HOtQ4cOtn///mrLFy9ebEuXLjUzs9LSUjvjjDOsQ4cOVlBQENTHa6+9ZmZmR44csalTp9qePXuqrV+xYoVJshkzZlRbLslGjhwZeL13715LTU21rl272rp166plZ8+ebZLswQcfDCxLT083STZ06FArLi6u9T1W2rBhg0mya665Jmhdenq6paenV1v2n//5nybJ/v73v9fbd8XXOOL/1jQajUaj0ao3bgsE0GLMTOXl5Tp8+HC15ZdccolGjBghSXr55Ze1du1a5ebmKicnJ6iP0aNHS5J8Pp+eeOIJpaSkVFuflZUln8+nr7/+us6x/PGPf9SuXbt077336tRTT622bvbs2erYsaNeeOGFoO3uv//+kFerAAAAuC0QQIuZMmWKVq5cqQsuuED5+fm6+OKL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pHg8rtNPP11XXXWVvvrqKw0ePFgXXHCBvvrqqy4dDwAA6Fx8zhUAdJLvf//72rJli+bMmaPhw4ersLBQb7/9tt566y1J0jvvvKPhw4fneZQAACAslCsA6ATV1dXaunWrxowZo+XLlzfNP3TokKZMmaJu3bpp6NChTfPLy8tVXl6uWbNmqbi4OA8jBgAAHUW5AoBO8Omnn6qhoaFVUTr22GO1YcOGVvny8nItWrRIJSUllCsAAA5TXHMFAJ3A3SUF13oBAICjA+UKQJd65JFHNHz4cPXs2VOnnnqqxowZo/vvv1/19fUtcpWVlbr11lt13nnnKR6P68wzz9TEiRP1zDPPNGUqKio0d+5cDRo0SAUFBTruuOM0cuRI/eY3v8l5PDt27NBVV12loqIi9ejRQ+ecc47mzp2rL7/8skWuuLhYJ510kj788ENNnTpVJ5xwgsxMr732Wt0cb98AABOWSURBVKt1mpn69+8vSXr44YdlZjIzlZeXN62r8d2phx56SGamRYsWSZLGjRvXlN+zZ0/OXwcAAMg/TgsE0GXuu+8+XX/99Ro2bJjmzp2rgwcP6rnnntN1112nnj17avr06ZKCGz2MHz9ee/fu1aRJkzRz5kzt379fL7/8sqZPn679+/frwIEDGjBggAoKCjR58mRdffXV2rdvnx5++GFNnjxZL730koYNG5ZxPJs3b1ZpaanMTDNmzNDZZ5+tF154QUuXLtXvf/97bd++XT169GjK19XVafz48YrFYrrttttUUVGhwsLCVutduXKl9u3bp7vuukvDhw/XlVdeKUk699xzW2VHjBihlStXqqysTJs2bdJNN93UlOvVq1e7v9cAACAP3J2JiYkptCnYraQ2cuRI79atm3/xxRct5peVlfnWrVvd3b22ttbPP/9879atmz/55JOt1vH000+7u3t1dbXPnj3b9+3b1+L5F1980SX5D3/4wxbzJfnYsWObHu/fv9979+7tp5xyiu/atatFdv78+S7JV6xY0TSvX79+LslHjRrlVVVVab/GRrt373ZJPnPmzFbP9evXz/v169di3h133OGSfMuWLVnXnfge5/3fmomJiYmJianlxGmBALqMu6uhoUEHDhxoMX/ChAkaM2aMJOmpp57Sjh07NGXKFF1++eWt1nHZZZdJkuLxuO6//36dfPLJLZ6/+OKLFY/H9e6772Ycy5o1a/TZZ59p6dKlGjhwYIvn5s+fr+7du2v9+vWtllu+fHnKd6sAAAA4LRBAl5k1a5ZefvllXXLJJVq5cqUuvfTSVpnNmzdLkq655pqc1llfX69XXnlFb7zxhnbt2qWdO3eqtrZW1dXVGZd79tlnJUlDhw5NeW3Taaedph07drSYd+yxx2rUqFE5jQsAABx9KFcAuswNN9yg6upqLViwQBMmTNDQoUO1YMECTZkypemueu+//76k1NcnNefuuueee3TnnXdq//796tGjh4qLizVgwADF43G5e8blG7dz0UUXpc0k3+mvqKhIxxxzTNavEwAAHJ0oVwC61C233KIrrrhCS5cu1Zo1azR16lRNmDBBGzZsUGFhoRoaGiRJsVjm3dPKlSs1Z84cjRkzRkuWLNHIkSPVrVtwpnMunxPl7orFYilP/UuH26oDAIBMKFcAutzpp5+uVatW6fbbb9d1112nJ554QgsXLtSyZctUVFQkSXrvvfc0YMCAtOtYsmSJ+vTpo40bN+r4449v8VzyNV2pnHHGGdq5c6dGjRrVtE0AAICO4IYWAPKmV69eWr16tSRp+/btkqTRo0dLktauXZt2ucrKSlVWVmrQoEGtitWLL76oysrKrNsuKSmRJD333HPtGToAAEArlCsAXWL37t1atWqVampqWsx/8803JUl9+/aVJM2YMUOnnnqq1q1bp02bNrVaz7p161RYWKhYLKadO3eqqqqq6bmPPvpIs2fPzmk8s2fP1oknnqh58+apoqKi1fOvvPKKNm7cmPPX11E9e/aUJH3xxRdN87JdNwYAAKKF0wIBdImqqirdfPPNuvvuu/Wd73xHAwcO1N69e/XII4+osLBQixYtkiQVFhbq8ccfV2lpqb71rW+ptLRUI0aMUH19vTZv3qzt27ervr5e1157re69915dfPHFmjZtmqqqqvTggw9q8ODB+uCDD7KOp2/fvlq7dq2+973vadCgQZo+fbq+9rWv6c9//rOef/55bd26VcuWLdPEiRM7+1sjSbrwwgslBdeklZWVac+ePRo9erTmz5/fJdsHAAAdR7kC0CUGDx6sZ555Rvfdd5+2bdumRx99VKeccorGjRun22+/XUOGDGnKjh07Vq+//rqWLVumsrIylZWV6eSTT9aQIUOabqG+YsUK9e7dW4899pgWL16ss846SzfddJPmzZuX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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mglearn.plots.plot_improper_processing()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 파이프라인 구축하기" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "from sklearn.pipeline import Pipeline\n", "pipe = Pipeline([(\"scaler\", MinMaxScaler()), (\"svm\", SVC(gamma='auto'))])" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Pipeline(memory=None,\n", " steps=[('scaler', MinMaxScaler(copy=True, feature_range=(0, 1))), ('svm', SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,\n", " decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf',\n", " max_iter=-1, probability=False, random_state=None, shrinking=True,\n", " tol=0.001, verbose=False))])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "테스트 점수: 0.95\n" ] } ], "source": [ "print(\"테스트 점수: {:.2f}\".format(pipe.score(X_test, y_test)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 그리드 서치에 파이프라인 적용하기" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "scrolled": true }, "outputs": [], "source": [ "param_grid = {'svm__C': [0.001, 0.01, 0.1, 1, 10, 100],\n", " 'svm__gamma': [0.001, 0.01, 0.1, 1, 10, 100]}" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "최상의 교차 검증 정확도: 0.98\n", "테스트 세트 점수: 0.97\n", "최적의 매개변수: {'svm__C': 1, 'svm__gamma': 1}\n" ] } ], "source": [ "grid = GridSearchCV(pipe, param_grid=param_grid, cv=5)\n", "grid.fit(X_train, y_train)\n", "print(\"최상의 교차 검증 정확도: {:.2f}\".format(grid.best_score_))\n", "print(\"테스트 세트 점수: {:.2f}\".format(grid.score(X_test, y_test)))\n", "print(\"최적의 매개변수: {}\".format(grid.best_params_))" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "hide_input": false }, "outputs": [ { "data": { "application/pdf": "JVBERi0xLjQKJazcIKu6CjEgMCBvYmoKPDwgL1BhZ2VzIDIgMCBSIC9UeXBlIC9DYXRhbG9nID4+CmVuZG9iago4IDAgb2JqCjw8IC9FeHRHU3RhdGUgNCAwIFIgL0ZvbnQgMyAwIFIgL1BhdHRlcm4gNSAwIFIKL1Byb2NTZXQgWyAvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJIF0gL1NoYWRpbmcgNiAwIFIKL1hPYmplY3QgNyAwIFIgPj4KZW5kb2JqCjEwIDAgb2JqCjw8IC9Bbm5vdHMgWyBdIC9Db250ZW50cyA5IDAgUgovR3JvdXAgPDwgL0NTIC9EZXZpY2VSR0IgL1MgL1RyYW5zcGFyZW5jeSAvVHlwZSAvR3JvdXAgPj4KL01lZGlhQm94IFsgMCAwIDg1NS40IDQ3OS44OTAzMjA2NTIyIF0gL1BhcmVudCAyIDAgUiAvUmVzb3VyY2VzIDggMCBSCi9UeXBlIC9QYWdlID4+CmVuZG9iago5IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTEgMCBSID4+CnN0cmVhbQp4nO1YTXMbNwy981fw2B5CEwA/j3HTupNDp2487aHTg0d2Enskp7Gd5u/3ceW1QFUrS3bddqY5eLT7JIIgHgjgmeylOXhJ9t2N9fYSf5/tr/Y3fJ5Zskf24NX5Hxez85+ODu3sxnjgC1NidAFP87unkKsr1QsTIN+/vjfmyny01bHlVBwXqRJy4WSLZEulOt/efEk12etz+4u9sgcvubkDn/D3GRvBjR9Pb2/Pr6/M7MYefE/2ZnZlzGC0ZEeVciI4Fn1wWbKQaHyucaHsQgjwA3gz0AHw9tAc28f56130VBO+D7J03WjX7eA6L12PvrjqKVTpT5C4upSwc+5PoPDOYWXn2Q/Sw8YkEQcLJaX+DLDvSqYUuD+DwjtflZ3NZxjdGny5HHJiTNHBLzjz0RA+X3h8ycIuEiVsN4QxJlelslQSH+xsYQ5P7MF3ZCnYk7eGg6s5VuyP7b09OTNf2a/tyaX59gRGvUNsbcv61RMsHPxwevVpcXh6/enq6MPt+4vZi9nFmUiu9tUHc7xhHbELJVe4ILLFBOVcpkxwcUQIf6k10DY3GOxM2AigsFZQKJy32aDEYWnjWEc2hgCiWmyTD/GfiywRT4Zlx8gycuE/HNnso6PofRWkfnoosrhHIUnNgh2fmLNE4amRbV9PRbZPgWkvUn5qYJnB3YSNKM7jJLHlLe/kxzGoeW0Zhabvf4Yj6mb0OaBWBUFTSQSCFj1ODomEKmk71DsKeJIOleIkCiGxZoYUHEZ40cH3v56bUHfAwwo3b1DEXw9N1a8VUWrVnCk4rowmAV+TY8nt1i2MeFRnj0ZfNT7vcDT84Kv3bR9tR+NDNR9L+Kp8vxtTm/1QNNgvVy+Lt0S0jMTEOVMOQ6bfzE7n59f27cVtS3mLlH+YqoAYSirNxKLHQWEl0pQEdFScwXPqUXZJUo1rRNUywpoo9euOkClcmdmBKGbkXeFmjwnhQTvmdq4acUhZw+cdjnHNBy8+N1zZ0fiuRJW71cNQEtDDMYRgR58iD0S9+fmbHViKKWNC6QgaoTtu7l5XtIyAYiRSgzo2llAX8TQF7RX/NnJxH3rEoIfmI6QDe7dw/1jHdqWmQvz79fnZxew+zKqpBEy9NVqUHMSWqUYsY91MeCCScEdzLTUOtXFDM+H7UsoPtOna9Vi9jrzLHv0q5Li1ipcUpkygmfgaa8aMJNuq+Pq0oG2gIKKj1cxRwjYbq3HheDVFt354H8Z91IvpJYBSL2gVgvrI3IuXFdxpl0wOw3MMo3TR7/3Av5+rjxQu2nmlT7TzCtbOKiPPfIYtmkW7r6SJdl/B2k9lZKP7T9IrRI4kxy9C5e8TKs8f0v+dQpkK6Rdp8q9JE0Enj4T5QGzNrg0KKbb5XcEJEsT7gMlcgdAIIWbuQZQkTB2+zVYrtJQRXZhNv231/iF4ZWOHSTcnl2NMbXzwLkDKlNpOlDBaQYW0m73C5x2OCo2iz5gm5tqMhneccwsvF3uRWJD37DwYLyWiVu+lR1R4KYuLKQUJPUEg2WESg6i0HYp0JwzcuUNjckUiZuKOI4o8wguz8dcdHdM4r/AHeSrRcSsN7WQJ8UmpthwZ1BtEVI/PNc4evV5KTE1SKjsdviNTlZarUaAaUyW7VCkNUrTsoUgwbOH2tDD0PGl8xVOH3vOkUc1Tav8bGHFFVIcrRgoS9kF8D6ZSLquzKaZyTRvwucY7RpSdRzAFjXS3etlLNjM1LWwEC1BEcCmjZQi42Lo8xkTKf1E3mK1a5yyY0bhvSOty4gnCZ71VPUb4rLWqTvj0Cm3XVvUo3bPWqrSNEDFLS00Z1/SxfsTicAwcRJrU3+JHRKZM2Eh1aLsheuTRNhvY6F7DmT8BKNL+5QplbmRzdHJlYW0KZW5kb2JqCjExIDAgb2JqCjE0MDAKZW5kb2JqCjE2IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTcgPj4Kc3RyZWFtCnicMzIyUTCAwxRDLgAaVwLoCmVuZHN0cmVhbQplbmRvYmoKMTcgMCBvYmoKPDwgL0JCb3ggWyAtNDUgLTI4NyAxMDAwIDgzOCBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMjI5Ci9TdWJ0eXBlIC9Gb3JtIC9UeXBlIC9YT2JqZWN0ID4+CnN0cmVhbQp4nE2Ry43DMAxE76qCDQQQ/1Q9AXLy9n/doWzHuZgPGnE4ogfPSWmT/oZYbDqGLNmkus5avut7mPImy9zVpRWB4sIUVeSzKDTJmmt1TyS5MRncbAXZVDJ3KArF2EhFSbNIUkiR4j0EbgqFw0jg1Cklqud0rEBIdjTCQNqWcdq2cdu6IORERbPBPqKjaDUlhnQN9PiuGIhvk0juypWX0qObjnGv6hjOeI4tLK3JxXAWy38oq+9l8Q/1A071oXZ5/M57L+bq/8EXHhuF4/b50iW3EWPD6Fm56dj0sjvOQ6f6+QdyTF/CCmVuZHN0cmVhbQplbmRvYmoKMTggMCBvYmoKPDwgL0JCb3ggWyAtNDUgLTI4NyAxMDAwIDgzOCBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTY0Ci9TdWJ0eXBlIC9Gb3JtIC9UeXBlIC9YT2JqZWN0ID4+CnN0cmVhbQp4nE2POw7DMAxDd5+CR7D+8nkCdErvv5ZOkaaDoQfS1GeEOWwJ3mNTC87RJX/Aqk/ZsoY/sLPnMIs/6knwsAe+3j3rHNkJWc2pOfUiarKgaUhTmLG6wmfjGBkCbypRCL6MxV9CR2JedF5Us0jl/iNmslAuSKVqjeBOxyhuGXzFrC8mNeGe2+GVzp1KeFE0OzVMLmcKtNhxOZSX3Dcc4/UBppg+CQplbmRzdHJlYW0KZW5kb2JqCjE5IDAgb2JqCjw8IC9CQm94IFsgLTQ1IC0yODcgMTAwMCA4MzggXSAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDczCi9TdWJ0eXBlIC9Gb3JtIC9UeXBlIC9YT2JqZWN0ID4+CnN0cmVhbQp4nE3MuQ3AQAhE0XyqoARzLGxFjnD/qT2BV0Q8acSHZohlygOqLpVG+VRafrKlQx6La/gQK42/19ilUgwTzsdzauyN+wWjnBmxCmVuZHN0cmVhbQplbmRvYmoKMjAgMCBvYmoKPDwgL0JCb3ggWyAtNDUgLTI4NyAxMDAwIDgzOCBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTg0Ci9TdWJ0eXBlIC9Gb3JtIC9UeXBlIC9YT2JqZWN0ID4+CnN0cmVhbQp4nE3QSw7DIAwE0D2n4AKV8BdznkhdpfffdkyIYMWTDPaYYirVnOqvpFy43sWHHerRoB50iBqt6pZEQNllS23Mqh/KaU/1UaDDh0gRgWnxniTJOo849JHxvtlaT1grs6NPbxN3wtgA6XrIfYaJja45QL0dUsv7ZP1QRsAk8SXB5JTgUwRRFKGkjXoVxapCWFdxYrLhU0QMlRR7JjbcZuOqgS6Kk7lm76uI5wqojmend7erfP9JqFNzCmVuZHN0cmVhbQplbmRvYmoKMjEgMCBvYmoKPDwgL0JCb3ggWyAtNDUgLTI4NyAxMDAwIDgzOCBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMjE4Ci9TdWJ0eXBlIC9Gb3JtIC9UeXBlIC9YT2JqZWN0ID4+CnN0cmVhbQp4nE1QQW7EQAi75xX+wEpgBph5T6Setv+/1pOk7Z6wZBsbjl6FlwfxfbTbDd8X7Gkbif9HD51MdJs8tYW96brcth76Aw4LoZj1iXr+sn/o2TNQoc2vAfe8cuFyeEywA95EdOM8aNqjavSFXKnpaMZmdmnurI1qOii+xp6BslvjyJJrNpLaPYmxKCbMMagULkRORBXCTMzuzyHdSPgy6R0uLIaGxec455BR/XVLsFTMrkCFZF1HhKozFVE7kCGdDVAvY5pO1FSJ8/Ch46VzbXB57uecx9cP1nlS4gplbmRzdHJlYW0KZW5kb2JqCjIyIDAgb2JqCjw8IC9CQm94IFsgLTQ1IC0yODcgMTAwMCA4MzggXSAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDIwMwovU3VidHlwZSAvRm9ybSAvVHlwZSAvWE9iamVjdCA+PgpzdHJlYW0KeJw9kLmRBCEMRX2iUAigm3i6ai02f3cfXTNrdKHmn2J0LSmV33GHKWfo/8H1GR/8DO+QnAYz1CRMJWqKg6WmuKo8I1vFuClvMXNpmLYmSGWJeuBTeCh/6WATl95icTmBwnaJd4uHvl8sB3ElKRbe+TKMdhY3UTNwwXu6KMnLmpwGaSiIz1jGRN1VCIPwRbm6FI0tfutsFzfqUNep9gwjLOYNZFXnpFLwAFSBn4qOtbKpNbeUXY3vfqczYl6MJXa8a36f7hk/f5tVRQwKZW5kc3RyZWFtCmVuZG9iagoyMyAwIG9iago8PCAvQkJveCBbIC00NSAtMjg3IDEwMDAgODM4IF0gL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAzOTIKL1N1YnR5cGUgL0Zvcm0gL1R5cGUgL1hPYmplY3QgPj4Kc3RyZWFtCnicTVI5jgMxDOvnFfrAAjp9vCfAVsn/2yXlSTbFjAlLlCjK19xDfixcXtc0PfDZcC4lQvwf3eHyIR4JTmo1el6xVWy5xFhiiTO2mA15XKFbEPSZMieyncfjshkE5vg0ZYdYbdzj55aCEr77SFVcAxSaIVqrmD2S16SPXdLVPE55nGiLIkQxTQaiqagwix0gn+gMMienG+Zf6Meg+YS/4Bk0XSV0YvhCb6Jno1Jak7beCHm5BibACKic0JIVPQrmCkZKmN/nPWRJLOQhI8ZsTpR1hJYiz00C31sF5kxr9usg1KX17Mj8UrIjTCrITKlaElhMLe3lwD+l10OGwXqscAQ5jkWOhKPoPxKROCcidpDBd2bYh2PkoIqhB6ta6d2HT4KdDfqohA/paDNfrZabpPo+9b3bGKiPjPDdHN9UwCp+PzTP08e9Oeyx8TG6rLXZaA5fSeEBQr1hJs5j7S0n7BtymPHh0BVWoUusSt9OHzrp/cwPj14fbXSfarkNqn/v53H9/gHfu6PFCmVuZHN0cmVhbQplbmRvYmoKMjQgMCBvYmoKPDwgL0JCb3ggWyAtNDUgLTI4NyAxMDAwIDgzOCBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggNjIzCi9TdWJ0eXBlIC9Gb3JtIC9UeXBlIC9YT2JqZWN0ID4+CnN0cmVhbQp4nE2TQbIkIQhE93UKL1ARCoJ6no6Y1Z/7b+cl/o6YRbW0YJIk8ESMFivb3ycOVsyWHi08W25rYb19nmW7RZ9tETePtW2zze3y7N7miPbzrMBH9PLBudrq0SZInyfXaXN6y/A2w1rinanX2YldTn5iN1kDtLPwhPGvHz5xIEpcCm1achvNk3wgexfqwWNOHr4hljAcA5YjxdIL4OcZRsjpbQiO5OacQ7BWxQLHFxP4hRhFcg4IbiggVHYIbiSCEiQBz8k7FUdsZCBakTzcINA0Kxk97vl5BiXm5YK1kOSHks7XIqusgHqdseqUVDc64VYnbVihXKs8UYLLs/pua0rENfBMEHXS0NVBczU00WBRf+ZuuWZVkXPLgxoJ61A7Dm3/HY/Ps9HAwf9bliE9NfxneFXwjWIgUMQVLkMFZnuRciHWW50UlZfbxeNXJEj5nqJHP9/RxUSPxoLOxjDxiCmnZpSJfMekI/FrIDzzUqajXEX5ON+XxrAWms198Y1Kb8pxskhoeERq5JfmuPnamCpDv+517Y0Oj+TOHKTRRvXDmLaxFwwQp4Zz1glzcGWl3wgVfN8sX4UiqfY9KkkuKjE0lDGRiKGnMOmTp4RiGWkjBbO8CcLoo6aFCpA1ttaAiVZFFrVYuw2t6MHjs9jp1JxbWb5uhDOf942jklCcSROq7W8egw+JDRDNBFNXtAw+0DSqgrQOt1pQ7nqTd1fwq7xW3UMZsF76JPTX1S/le7WL6hIzJUZvrbo4vmybOL/McE1A7tq8a6lORajy+0ZaCEXaCFVq3TyST5mlppjU+Ima5NaCdNH+7cXn+fMPguL3rAplbmRzdHJlYW0KZW5kb2JqCjI1IDAgb2JqCjw8IC9CQm94IFsgLTQ1IC0yODcgMTAwMCA4MzggXSAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDI4NwovU3VidHlwZSAvRm9ybSAvVHlwZSAvWE9iamVjdCA+PgpzdHJlYW0KeJxNUbuNQzEM698UWuAA62/NE+CqZP/2SL8LksIwYUokJV97lniavK52P+h50I86YUV/w97rn/+gsA1EnQ+6ddRDqqlN1EE2NL8Q2U/d8/Kd4p7oCHWxgXqEWJZEj5ilPK7UEAWTqaIVkvBTbzKGhEppPi0EygTFYI5SQ4mPnmYvhdw+ZlYFxqbEdMMMtQ28Cr0DRnNDDX26pEYKes5nPAbNWtRKaMlW7Eo3c2ojuTYOrJDVAlabgoZZHC2+GkE4MSQXezw5MV7gE9xFt6TRzRElTdFjuNcJzRtqNgfp3Ixi6JvJdcDzgGFWU3sjVgHZ7HN73Aycdh0UrveNtDlcUWCixN9FYfvIERg9khOxlv8ZWJGj6v2Pj+v3D0z7crQKZW5kc3RyZWFtCmVuZG9iagoyNiAwIG9iago8PCAvQkJveCBbIC00NSAtMjg3IDEwMDAgODM4IF0gL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAzMTUKL1N1YnR5cGUgL0Zvcm0gL1R5cGUgL1hPYmplY3QgPj4Kc3RyZWFtCnicTVJLbgUxCNvnFFygUviT81Tqanr/bQ2pNG+FE8fGMLMknPII/S6vM+i5iA/QsC8ali0pIqAw8UHPsrh3vutW31O/l0PTKDRurT4XmECXaN0xVEUF9gSTG2pnmmp+GdujwTu+7/2A1SSfPsGb3IQ8DzkSuynZOZ0AHa2gESNLnu4W7ZYMxorScaOHageqNINpdSZLVtLsjkJayMFMtrV94WHdqV2Qw/DevDva3EDn6AgsmFCPg5G+zSLOgH8SC1yj3QpiqV6v3hCMyIahBdi8Q0mhIR4r1m7/BnaasY0YGyd8Gu8xi2cZCMlOHbTXMauBxu9aBKdzHfx09Jja8ZvBAkputZj6PZ++0fsTPKvQS7l/oEaiM8MHaO599azAUr5YHYKGqTNzvqCtsXeM/qIRfGif9fMHzyuEmQplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8IC9CQm94IFsgLTQ1IC0yODcgMTAwMCA4MzggXSAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDE4OQovU3VidHlwZSAvRm9ybSAvVHlwZSAvWE9iamVjdCA+PgpzdHJlYW0KeJxNkLkNAzEMBHNVwQYMaEnqYT0HODr3n3opyzhFGmj4lxFdXjCVTxnAD++FY9Yk+oe2bkY9KnM6+qJ70Qs1tj7QppMcdpC3tu1Du86UGFl5yqipLPygvgZA6we5ZSvrJ1kf2z6EkRla65/2n9XJt4k1F0yTq3jGBFY9xBTvIcoZaEgwyzWaCZTOmKVcCSpAMMaC2WA9zgFe0pyGPWgwSC4a+aOiGcFeV1GvwkYKz/XBCnyufY27vL+azVDYCmVuZHN0cmVhbQplbmRvYmoKMjggMCBvYmoKPDwgL0JCb3ggWyAtNDUgLTI4NyAxMDAwIDgzOCBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggODYKL1N1YnR5cGUgL0Zvcm0gL1R5cGUgL1hPYmplY3QgPj4Kc3RyZWFtCnicTc7BDYAwCAXQO1OwgEmhFHQhT3T/qxA1cOIlH/IBUkLmiRtSRgMdbHKTTg2xWNN6U9ImkfGlJb5WpqJd0ebw9zqclr3xQOKgvKxpVBsO9wN0CSGaCmVuZHN0cmVhbQplbmRvYmoKMjkgMCBvYmoKPDwgL0JCb3ggWyAtNDUgLTI4NyAxMDAwIDgzOCBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTQ1Ci9TdWJ0eXBlIC9Gb3JtIC9UeXBlIC9YT2JqZWN0ID4+CnN0cmVhbQp4nE3QuQ0EIQwF0JwqaGAkjC9oaCOm/3RtjsHZE9/yQQKELI3ym1zKLY+kwkGejnTqTLVksvSdYiz2VomPsGdhMGHlT32nLHSksFNh/XT6qXIQzV2o9SBUT1uDoNq77xewMiolaPU4V5hs9gNY/SBjw7mJXAD3XXZV13IUBTzvl4tHYH9ikI8KU0f6/QEMREr3CmVuZHN0cmVhbQplbmRvYmoKMzAgMCBvYmoKPDwgL0JCb3ggWyAtNDUgLTI4NyAxMDAwIDgzOCBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggNDc1Ci9TdWJ0eXBlIC9Gb3JtIC9UeXBlIC9YT2JqZWN0ID4+CnN0cmVhbQp4nFVUOY4DMQzr/Qp9IIB1+XhPgK1m/98uKc8g2WJgwpIoinLSLKZM3fLbCm2Tqw23b4To1Z68q+2U0Q0FBIM3c/1D3T5ZuNIu4RP5hUAxe0h0l7FDfC15t7GApoFkieeWEUM8KmKI+JDcU9ym5HCcikjaFlcwgcFVJaLX+W4O6USeWhmu866x5cVimcVq7ncfq/wtuo8SXY82nUetYkCqrxPzIEKUiDADmDWBDxGwxN5C1lSrPmnOPuicHkIlGV7aMjZVQ21SF9QnlHAenu/GCYk4MTPowamhK2ShS2Slb6cPnWRnOksl9PpoK/ehtrYB9c9+6DXRwKYKBaqhLtBp0N8czOmJavTfo1hymcRMakHHWJwBtXgGCZ9jlUq4FxsffcK74GQ8MVk/Nw4GZnjaXeOYlSy1WbAaJj196Bw72/RSYmPe2mxoqbVyz87pFSECY2WYnRqtCFn6rn1wy+zjm27UC9r4+M7WLG1eDlKtL8zQ+VbOpnhinnluODEz6MGpoStkoUtkpW+nTznJXwOd7bfXpa3ch9raBlQ8+0ENduaJRYXx2eJXRqBzAukXMLyHq631jU6QDB9UFBPSXqoLtIp3UfAqqJCHfwDfX+gV/tR80Cn5+QM0xtE5CmVuZHN0cmVhbQplbmRvYmoKMzEgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAzMTkgPj4Kc3RyZWFtCnicNVI7cgUxCOv3FLrAzpi/fZ7NvCq5fxvBJhUYYSFkpx0sWOB2R4qjbOFLrlwC0cAPswMxGVAITlTBc3Vmhu8rtqIQXrhFEWvj5tXn8mRmBdeX32pPfC5Tn0yLiDGS55YkIkegkAjoHgWprJ7ASWqjgkQQ2M3iyovS6pVnBvNuZuJL4QaPpF4q6u46iCD1MsRhtOaekVnIXFC25SaZbxS7nkspprir2R5j7KyJHG2vVU5NRZVBl0p66eBatVgpsu6DpB2ZjXQW1YZNRnNycRtiycnx10O5ydPZUwluHnmG10avF3eiPXbe2Pvut6LsoPZWndaINkL92u9GS7Tn1ezMJ4tYkKQbUhA/ZO457Yt7v/7mjHojn5YIM6UKmXv8BVQg0j9B6TtH2SqK4C3rQJNqkiDKMf9f6rk+v7TGdQkKZW5kc3RyZWFtCmVuZG9iagozMiAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDUwMSA+PgpzdHJlYW0KeJwtk8mR5UAIRO/fChxQRLHUZs+fmFOP/9d5ifqgAAEFSQLzhg2bx54qm5m2M+yPf7CE2z9J92M/rUTYvIiy5Yhp389KlGVr9v+6HfT93Gt3mKfb2uYEzcLqd1oNC8xZFjskvp8kAUoSCogkaCl1kenwIBcQ7itfh7TjWML8Liveh49+QnbglTtVyAqOqKMaZ1sAPndSeFhO/o/eZBEL2Aw8xOdIvosnUgAHzccg16Shg29Fd5RbWLyIIbdIqYEHHOWqqF7p6mCfYRuYlIawY3UhELYJk6glM8reBrI1eJS24jfJmnDtAZEilJdH8T4Xwd48bLzqf8do1BftdJcaZpJPkk5hpC1LEZBNp9tvM0ppOCtGsC4e1d0C0BoZflqbV+iZppq7jtT86ly0tAKZLHWyI/FMXjv5wLOYeoF4wTdYNp3AaBatEpXjtAT/Gq0F81hw4+BZIZQudujVmd1kM1pWe6RpG3g7XRsHktErx5KVVpFZFx35VZfCFmCpXnMQkyWoUY0twFScgvald0vDi3dXDtPWORQbklRTh5mje4+ryah+sCM6puCGJH0rb2t8k5xO9UnlLZBTUHbzxhEVac/vUB4QUOnhFJL1eLK5q4l2e0t1tpq0JMjJLM1Bowhnd56XO8fCrKHtCXuv+/v5+x/+wL4UCmVuZHN0cmVhbQplbmRvYmoKMzMgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA4MSA+PgpzdHJlYW0KeJw1jLsNwDAIRHumuAUiGTAQ7xOlwvu3cZBd3dP9XA0NgWupiyOE8TBx08JJMgSsA0nKNyx+6H1bpr1qSWe70mj1liSum2Jn5zbp/QBw9RcpCmVuZHN0cmVhbQplbmRvYmoKMzQgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA0MjYgPj4Kc3RyZWFtCnicNZJLkuQwCET3PgUXcIT4yJLOUxO96rn/dl7imkUVGBCfzJzPsGFx7K5ltdJmhv3xK4+b78f+thdz2+8V9VjUkDe2RZb5wkaYz2kxwj6Xp94RiUG0XutLGby9zHPYQ3wOq63wGsZIP4veNDsynyvI65tsMONQpOp0ni0eLJvHssKWqnMu23w/x3w8lqzl8SjBCV7T+pzna7cyh7KT3HeC1qef760N9fW5dpFn4+yyNh1O5gcQuLsVBc4Oc0ygYCVX5yAzQ1CtRjNoJcs2ddrLo1rw5ozaAqc4oH8wUOO1mRoo787JRK3z9bigsp35ddYjnJITnStnWMNCh5s7Y9qt8OAzUiseNYVXlr4T5FHBXa4M7W4ACw6QJMJHW4ja2Z6jhbtgMKloUtyrux3GhNtiisIPp5hoBCj28V7IHpfagIR/p7mWgRporZaQDknB6MAg+qWikAYBN0d3gadkv9/X+0KCJ0mASC5ZB+apajoWlEgcxfWpWS8d0iB7JVdUq6ogwf/LTJoGJ9ESq9oKn3gjon9KTNk92HeKi9HCKxD5Cuxz/fwDeTOhHwplbmRzdHJlYW0KZW5kb2JqCjM1IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMzQ4ID4+CnN0cmVhbQp4nCWSSZIlMQhD93kKLpARZvB0nl9Rq+77b+uJv8jABiwJkXWHDcttb12rvWxG2o8/taZx+//UDjvZpRMdSHyebrV/T82y18sqh71xrEbYm4uO3FSqLGs1ePo3fp7oyrVIZdKi3zgVXwe0a56K5gCH8gdtZXvYTpvbfAiGly587mcqRGbzWuyNoGacy3JKMMh5jh0qfkB2EEuUOa0WlIshaPB7bA69iAybQMT2diVRowgF4J1RBbl5L1FCK6Ac2DWHFdbKvdrZhnEaJcs45eUmSRcdi2+Mnog5XZ/0qwukUiWXHNgm5preoymi8lSfAl+qJiZoGWIMhx/7XBxjmbOyPKttZuWLjNbSNgpxtxusg34P1rPyG7N90glf1OEsUG+8jiqgeFBhDoxwzD/S7KgnFY5kXGQv/V+EctxxB3GJjb3i1AzcERmzHW1aDVB4JccZ+ftXfp7fPzYZgMEKZW5kc3RyZWFtCmVuZG9iagozNiAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDM1MCA+PgpzdHJlYW0KeJxFkjluxEAMBHO9gh8QMLzmeM8ajtb/T12k1nAgsMW7m5N7yxA7ckdIashaS770Cptiw+TnQWS9G7kOCTNxx2qK55DXFWOJryF+sLu+kKD6dZU3FE/iYYz7lPBdEd0SsZiNTRNbs+3rMnuQMjUcO6tzEFH+PFOUWjvnsWQTAekk1xUvNo+sDmyawZCdzcXmLMOMowVc8bGdA1ctlS4By3mEBr5dVpYbXhQUTR2nidcgiFuNooYltAh8ZKuI0r31GwWQbwzBh743y5Zwt7UQ9Li9CGlfwXK2ZUl9kO7KYDYi3tZCWNKFfkNlyS4ieGcK4qSWI1hMSwCoaZw6se4sY5YtAGJwP0oH2Rg/uJHdoTxnky3tvOcN0ETaOjvd6yRxqkDPYGJ21/wonC2xs1sh52jJKo6i+TwKFok67uBD6uAEEbNV243ejeotvq+/V/mg27Oj/0gfeb9/Afe7hKIKZW5kc3RyZWFtCmVuZG9iagozNyAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDM0MCA+PgpzdHJlYW0KeJxNkktuBDEIRPd9Ci7Qkvn5c56Jsprcf5sHPZGyogw2VBXOPDLEl9yxJH1ImsuXXgq0M+TnCj+N3h8UH+SxJWyKb+IYEjrldfkKiQiqZHJzf3Z8XbbyyWTFEGNoRL0xPRJOZRgdt2h11KCiy7u3TmWOiSZxWlUCFGScWbx/+GZVPszfl53dcn5gpY2qew6VmEzMxe0cIPWW7nE62ixWjSzpo3b+I3S+e4om87FNh8NZhSElBkKlst5ALSvgC57UGUF4Fij1IhsOGXihD2vimOxR6XNkT6i67OiwmlKBsh8rb0iX0bdho5rc3c/XYZOOFO+N+ngivOaDzGrXkMes22oxiqE3PMtKBKkWw9e1+Q9DMIqWOclH80Xxqf+iu4N9xoqtXUpcV932dNJz9+9ASShrLauj1+rWK9DJJ+GCojtH2WSGXAwu+2phfyt8Xd+/TyJ+sQplbmRzdHJlYW0KZW5kb2JqCjM4IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMjE0ID4+CnN0cmVhbQp4nE2RS47DMAxD9z6FLlBAP0vWeVLMqnP/bSm7Rbrii6g4JmPOxCSTHjbJJlOuoqcMwzyF6X+YKUjJ1KFOJgENuobxAiVpFXRBees1dK4zwaHJRSpFUdYOG0UmSQWFx1FWOE0TX3wN0/wh9wlq96a+LEjkhz7uvOGc0d5NId/9wJrgKVJJFLcq71uY7HTiRmmOZpDNO5Mk8gd2C33gHRVsZHUm7OWatFOjPl2+FU6diUkXu9Bh6+7OmtBm97z4VJ+znSa0+jqE9gw9JSd9/8k1/t7WClK0CmVuZHN0cmVhbQplbmRvYmoKMzkgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAxNDcgPj4Kc3RyZWFtCnicRU5LCgMxCN3nFF6goMZocp4pXWXuv63PDC0EfOR91YyYnOnVB8k0Cgt6SxMfNITpLgRyt5h/AG7/VLtlgqf7BghWSiIkKPLpoqvNlclCwqdBVOteTfo6P8OOwv2xSNYgo1ZlJC46kgFKHRQ+tDxuDCZTXCch1bVXD24ybIXmKkEOO44cigjsRwo/FZ8vDUw00AplbmRzdHJlYW0KZW5kb2JqCjQwIDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggNTIgPj4Kc3RyZWFtCnicMzIxUTBQMDdV0DU2VTA0M1QwNzdXSDHkgjFzwSyQZA4XVBWYAZLLgavK4UoDAPruDhYKZW5kc3RyZWFtCmVuZG9iago0MSAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDMyOCA+PgpzdHJlYW0KeJw9kUtuA0EIRPdzirqAJb7d9HkcZTW5/zYFE2dhUR5oKB5ZBcFOvKwEuQxpji+9dClSBT9UgfDAfWklgiUmB1EO84U4B+/L+qEm7MQ0cH8ava+QGhXrqU1ht1RmMgwhPkPd90RL68zM4Lvc0MUYjD4Z1p01DVeyFyf1+DajnMH610YYg3W5HyqadC7zioCbTKThilGWzooNs+Kb7IwYXmrQIgCO55qbn5sHxT1iYN3XB9uohnX/Y6PKA1sDkEr3+fumsxT705dugWp1+11Q4T/eg9baBHN0o9x2kTRZMRCc1/A+cCFuaVNOu2PS14gQ7eqwg+qVmov2DbaNkY4P6VbOEZFFSIzOlzIZsg3vr+xHB06gHTn7rFG2m7gMwpgzmFMRZJsO3qO38NMOei3fdMGf57O4z0UbhfPWg4ubf7C9r+9fLJJ8OAplbmRzdHJlYW0KZW5kb2JqCjQyIDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTk4ID4+CnN0cmVhbQp4nD1QTXKFMQja5xRcoDNRND/n+Tpdvd5/W/S1XcEEjQAPMbETH0xwb6QTnza4EkHD92AWW2AsREyQhY5n0IsFaCHUxLTGZ7h+LearJgweV3+wFDrCE24bYYRP7d8jxa6Bx2FHuAK2qZu1Y/JCN9jST5pt3N6KtfHX+E3QJG2K2PJ/tjqL2JmINXVVKI/ucnFv+UpqWr50vSqgNgsrZbxflDvdu4f0WUqK2ZHb3btdn7UiVp293kw9UWkq91+vz/j6AU7BRsUKZW5kc3RyZWFtCmVuZG9iago0MyAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDQwMyA+PgpzdHJlYW0KeJwtkztuBDEMQ/s5hS4wgPXx7zwbpEru3+bRTrGQxrYoktLW7Nasmr21rYg90r786c1Ws99nlY1m7sOqm9e07PZ5fE6LbtH0s0hX+Dwx9vney4KXvqyS48xlfVnWsuUnuLvOlYUu6MDLjGHeh248zAW23ZyaGGW+hRUtLXzbz+OdrC63GGk7LNbiyQCReoCy6oQVHJNUlM1ACX2hXohDi9g5OKsf8VHjRHrNm2UDhp6ZoF7meNJhkjQsOJb8mUI7WXP4Kctzx7stj7FkH3Vzn4pEQYGZmFUljklldYQclnhcN8LFb+aL2o4relHi4h0l2c5wSr5pSMeIkw1OemEFcTY0aFDSmg6+NMArMCb2Vh+YBu9+mIF8VwWxa2778JF6KsR74VYQN9/ejnp4MP0K+VlEnB7iUqnZxlkxz7rRhaZsYRqHo86I6hoJJXjDSnrc3mMdg34BT6S/SElsfHP9E3/ZUa2CdjnyRsQCocxHJ7JIukmheaMGimzaSzuInM7NZmqATevKXiLk/h0+z/cfbsqWlgplbmRzdHJlYW0KZW5kb2JqCjQ0IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMjAwID4+CnN0cmVhbQp4nE1QSRLDIAy78wp9IDN4AeP3pNNT+/9rhdNJe0gsWyAs2Qh0GA6fMH7TBx7SzAY88G7miqFFjV7FBWfb4JDEiycVhyZMOLEJzaBY5xmNReTQ2UteKbXr2SSviQyrO2JCtWJ6wpELVOA/91u741Z86q5DOiuJG8xiZPkfukjT+Yf8Zn9Iun/RSuwSwcIsYm+0Asxor+xkk7lYWaDlgHbGplAub+VZB5TjTdEx/em2pVOrj4ulLasUezBSCrCn3JX52Z4fxSpLlQplbmRzdHJlYW0KZW5kb2JqCjE0IDAgb2JqCjw8IC9CYXNlRm9udCAvTmFudW1CYXJ1bkdvdGhpYyAvQ2hhclByb2NzIDE1IDAgUgovRW5jb2RpbmcgPDwKL0RpZmZlcmVuY2VzIFsgMzIgL2NpZDEgNjcgL2NpZDM2IDgzIC9jaWQ1MiA4NiAvY2lkNTUgOTcgL2NpZDY2IDk5IC9jaWQ2OCAvY2lkNjkgL2NpZDcwCi9jaWQ3MSAxMDUgL2NpZDc0IDEwOCAvY2lkNzcgMTEyIC9jaWQ4MSAxMTQgL2NpZDgzIC9jaWQ4NCAvY2lkODUgXQovVHlwZSAvRW5jb2RpbmcgPj4KL0ZpcnN0Q2hhciAwIC9Gb250QkJveCBbIC00NSAtMjg3IDEwMDAgODM4IF0gL0ZvbnREZXNjcmlwdG9yIDEzIDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9OYW51bUJhcnVuR290aGljCi9TdWJ0eXBlIC9UeXBlMyAvVHlwZSAvRm9udCAvV2lkdGhzIDEyIDAgUiA+PgplbmRvYmoKMTMgMCBvYmoKPDwgL0FzY2VudCA4NTAgL0NhcEhlaWdodCAwIC9EZXNjZW50IC0yOTkgL0ZsYWdzIDMyCi9Gb250QkJveCBbIC00NSAtMjg3IDEwMDAgODM4IF0gL0ZvbnROYW1lIC9OYW51bUJhcnVuR290aGljIC9JdGFsaWNBbmdsZSAwCi9NYXhXaWR0aCAxMDUyIC9TdGVtViAwIC9UeXBlIC9Gb250RGVzY3JpcHRvciAvWEhlaWdodCAwID4+CmVuZG9iagoxMiAwIG9iagpbIDg5MiAyMjQgODkyIDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDg5MiA4OTIgMjI0IDIyNCA4OTIgMjI0IDIyNCAyMjQgMjI0CjIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDQ0NiAyOTcgNTgzIDU4Mwo4OTIgODkyIDI5NyA0NDYgNDQ2IDQ0NiA1ODMgMjk3IDU4MyAyOTcgNDQ2IDU4MyA1ODMgNTgzIDU4MyA1ODMgNTgzIDU4MyA1ODMKNTgzIDU4MyAyOTcgMjk3IDQ0NiA1ODMgNDQ2IDY2OSAxMDUyIDY0NCA2MjcgNjM5IDcyMSA1OTYgNTU0IDcxMCA3MTggMjQ3CjQxMCA2MjYgNTI5IDg4NCA3MTAgNzUyIDU4NiA3NTIgNjEwIDU5MiA2MjEgNjk2IDYzNSA5NjEgNjE3IDYxMSA1OTQgNDQ2IDk2MQo0NDYgNDM0IDQ0NiAyOTcgNTYwIDU4OCA0OTAgNTg4IDU1OSAzNDAgNTg4IDU5MiAyNDQgMzAxIDUzMCAyNDQgODkyIDU5MiA1NzcKNTg4IDU4OCAzODMgNDc1IDM1NyA1OTIgNTMwIDc4OCA1MjggNTMwIDQ3MyA0NDYgNDQ2IDQ0NiA2NjkgMjI0IDg5MiAyMjQgMjI0CjIyNCAyMjQgODkyIDg5MiA4OTIgMjI0IDg5MiAyMjQgODkyIDg5MiAyMjQgMjI0IDIyNCAyMjQgMzAzIDMwMyA0NDYgNDQ2IDg5Mgo4OTIgODkyIDg5MiA4OTIgMjI0IDg5MiA4OTIgMjI0IDIyNCAyMjQgMjk3IDg5MiA4OTIgODkyIDg5MiA4OTIgMjI0IDQ0NiA4OTIKODkyIDg5MiA4OTIgODkyIDg5MiA4OTIgMjI0IDQ0NiA4OTIgNDQ2IDQ0NiA4OTIgMjI0IDg5MiA0NDYgNDQ2IDQ0NiA4OTIgODkyCjg5MiA4OTIgODkyIDg5MiAyMjQgMjI0IDIyNCAyMjQgMjI0IDIyNCA4OTIgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDIyNAoyMjQgODkyIDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDg5MiA4OTIgMjI0IDIyNCAyMjQgMjI0IDIyNCA4OTIgODkyIDIyNCAyMjQKMjI0IDIyNCAyMjQgMjI0IDg5MiAyMjQgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDIyNCA4OTIgMjI0IDIyNCAyMjQgMjI0CjIyNCAyMjQgODkyIDg5MiAyMjQgMjI0IDIyNCAyMjQgMjI0IDg5MiAyMjQgXQplbmRvYmoKMTUgMCBvYmoKPDwgL2NpZDEgMTYgMCBSIC9jaWQzNiAzMSAwIFIgL2NpZDUyIDMyIDAgUiAvY2lkNTUgMzMgMCBSIC9jaWQ2NiAzNCAwIFIKL2NpZDY4IDM1IDAgUiAvY2lkNjkgMzYgMCBSIC9jaWQ3MCAzNyAwIFIgL2NpZDcxIDM4IDAgUiAvY2lkNzQgMzkgMCBSCi9jaWQ3NyA0MCAwIFIgL2NpZDgxIDQxIDAgUiAvY2lkODMgNDIgMCBSIC9jaWQ4NCA0MyAwIFIgL2NpZDg1IDQ0IDAgUiA+PgplbmRvYmoKMyAwIG9iago8PCAvRjEgMTQgMCBSID4+CmVuZG9iago0IDAgb2JqCjw8IC9BMSA8PCAvQ0EgMCAvVHlwZSAvRXh0R1N0YXRlIC9jYSAxID4+Ci9BMiA8PCAvQ0EgMSAvVHlwZSAvRXh0R1N0YXRlIC9jYSAxID4+ID4+CmVuZG9iago0NSAwIG9iago8PCAvQkJveCBbIDAgMCA3MiA3MiBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTUyCi9NYXRyaXggWyAxIDAgMCAxIDAgNDc5Ljg5MDMyMDY1MjIgXSAvUGFpbnRUeXBlIDEgL1BhdHRlcm5UeXBlIDEKL1Jlc291cmNlcyA8PCAvUHJvY3NldHMgWyAvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJIF0gPj4KL1RpbGluZ1R5cGUgMSAvVHlwZSAvUGF0dGVybiAvWFN0ZXAgNzIgL1lTdGVwIDcyID4+CnN0cmVhbQp4nCWPMQ7DMAwDd72CHxDgOIrirF265w9tl3jJ0u+XVCHCgCnrRDc01vm0Bar7U/e9S/cLb/pfM18T1DQeSxu46DRQ06LT6XJ6gKIzcKSMZYCatgWOVgbfdhrZMEJGQtBM7GJq87T/7ssSriY7KRoHvYY5maIR7YUnexONy70CcHuIx3xeGRUwxGR8r3/oE6uw9rAfJbMxHAplbmRzdHJlYW0KZW5kb2JqCjQ2IDAgb2JqCjw8IC9CQm94IFsgMCAwIDcyIDcyIF0gL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAxNjIKL01hdHJpeCBbIDEgMCAwIDEgMCA0NzkuODkwMzIwNjUyMiBdIC9QYWludFR5cGUgMSAvUGF0dGVyblR5cGUgMQovUmVzb3VyY2VzIDw8IC9Qcm9jc2V0cyBbIC9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUkgXSA+PgovVGlsaW5nVHlwZSAxIC9UeXBlIC9QYXR0ZXJuIC9YU3RlcCA3MiAvWVN0ZXAgNzIgPj4Kc3RyZWFtCnicdY8xDsMwDAN3vYIfcCE7iuKsXbL3D22XeMnS75d058KEAVPWiXI4z+Mwv61e9/Stx4L/j+s9G7YmXU+8rOJjVpYENYxX9Y6TjoMaFo1Ok9MCFJ2OPWXUDmrYGth9GvzbaKSjh4yEoJnYxNTkYb/ZpyWKiqykaGwss5mdKRrRZeLJXkXj8DIDcHqIx3xlZlTAEJPxy9xDSyzC2t2+R5A3xAplbmRzdHJlYW0KZW5kb2JqCjUgMCBvYmoKPDwgL0gxIDQ1IDAgUiAvSDIgNDYgMCBSID4+CmVuZG9iago2IDAgb2JqCjw8ID4+CmVuZG9iago3IDAgb2JqCjw8IC9OYW51bUJhcnVuR290aGljLWNpZDExMjggMTcgMCBSIC9OYW51bUJhcnVuR290aGljLWNpZDExOTggMTggMCBSCi9OYW51bUJhcnVuR290aGljLWNpZDE2MjQgMTkgMCBSIC9OYW51bUJhcnVuR290aGljLWNpZDE3NzggMjAgMCBSCi9OYW51bUJhcnVuR290aGljLWNpZDIyNDEgMjEgMCBSIC9OYW51bUJhcnVuR290aGljLWNpZDIzMzMgMjIgMCBSCi9OYW51bUJhcnVuR290aGljLWNpZDI1MjAgMjMgMCBSIC9OYW51bUJhcnVuR290aGljLWNpZDI3NjggMjQgMCBSCi9OYW51bUJhcnVuR290aGljLWNpZDI4NjQgMjUgMCBSIC9OYW51bUJhcnVuR290aGljLWNpZDI5NTkgMjYgMCBSCi9OYW51bUJhcnVuR290aGljLWNpZDMxMTQgMjcgMCBSIC9OYW51bUJhcnVuR290aGljLWNpZDMxNjcgMjggMCBSCi9OYW51bUJhcnVuR290aGljLWNpZDMyNDMgMjkgMCBSIC9OYW51bUJhcnVuR290aGljLWNpZDMzNzkgMzAgMCBSID4+CmVuZG9iagoyIDAgb2JqCjw8IC9Db3VudCAxIC9LaWRzIFsgMTAgMCBSIF0gL1R5cGUgL1BhZ2VzID4+CmVuZG9iago0NyAwIG9iago8PCAvQ3JlYXRpb25EYXRlIChEOjIwMTgxMTI2MTcyNzI2KzA5JzAwJykKL0NyZWF0b3IgKG1hdHBsb3RsaWIgMy4wLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZykKL1Byb2R1Y2VyIChtYXRwbG90bGliIHBkZiBiYWNrZW5kIDMuMC4wKSA+PgplbmRvYmoKeHJlZgowIDQ4CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNiAwMDAwMCBuIAowMDAwMDE1NzgyIDAwMDAwIG4gCjAwMDAwMTQyNDQgMDAwMDAgbiAKMDAwMDAxNDI3NiAwMDAwMCBuIAowMDAwMDE1MjM1IDAwMDAwIG4gCjAwMDAwMTUyNzggMDAwMDAgbiAKMDAwMDAxNTI5OSAwMDAwMCBuIAowMDAwMDAwMDY1IDAwMDAwIG4gCjAwMDAwMDAzOTggMDAwMDAgbiAKMDAwMDAwMDIwOCAwMDAwMCBuIAowMDAwMDAxODczIDAwMDAwIG4gCjAwMDAwMTI5NjggMDAwMDAgbiAKMDAwMDAxMjc2NSAwMDAwMCBuIAowMDAwMDEyMzI1IDAwMDAwIG4gCjAwMDAwMTQwMTMgMDAwMDAgbiAKMDAwMDAwMTg5NCAwMDAwMCBuIAowMDAwMDAxOTgzIDAwMDAwIG4gCjAwMDAwMDIzNDMgMDAwMDAgbiAKMDAwMDAwMjYzOCAwMDAwMCBuIAowMDAwMDAyODQxIDAwMDAwIG4gCjAwMDAwMDMxNTYgMDAwMDAgbiAKMDAwMDAwMzUwNSAwMDAwMCBuIAowMDAwMDAzODM5IDAwMDAwIG4gCjAwMDAwMDQzNjIgMDAwMDAgbiAKMDAwMDAwNTExNiAwMDAwMCBuIAowMDAwMDA1NTM0IDAwMDAwIG4gCjAwMDAwMDU5ODAgMDAwMDAgbiAKMDAwMDAwNjMwMCAwMDAwMCBuIAowMDAwMDA2NTE2IDAwMDAwIG4gCjAwMDAwMDY3OTIgMDAwMDAgbiAKMDAwMDAwNzM5OCAwMDAwMCBuIAowMDAwMDA3NzkwIDAwMDAwIG4gCjAwMDAwMDgzNjQgMDAwMDAgbiAKMDAwMDAwODUxNyAwMDAwMCBuIAowMDAwMDA5MDE2IDAwMDAwIG4gCjAwMDAwMDk0MzcgMDAwMDAgbiAKMDAwMDAwOTg2MCAwMDAwMCBuIAowMDAwMDEwMjczIDAwMDAwIG4gCjAwMDAwMTA1NjAgMDAwMDAgbiAKMDAwMDAxMDc4MCAwMDAwMCBuIAowMDAwMDEwOTA0IDAwMDAwIG4gCjAwMDAwMTEzMDUgMDAwMDAgbiAKMDAwMDAxMTU3NiAwMDAwMCBuIAowMDAwMDEyMDUyIDAwMDAwIG4gCjAwMDAwMTQzNzUgMDAwMDAgbiAKMDAwMDAxNDgwMCAwMDAwMCBuIAowMDAwMDE1ODQyIDAwMDAwIG4gCnRyYWlsZXIKPDwgL0luZm8gNDcgMCBSIC9Sb290IDEgMCBSIC9TaXplIDQ4ID4+CnN0YXJ0eHJlZgoxNTk5NgolJUVPRgo=\n", "image/png": "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xYsXS5KuueaasPo8duyYPvzwQ61evVpr167Vl19+qdLSUh0+fLjO7d566y1J0oABA0I+29S9e3etWbOm2rK4uDgNGTIkrHEBAAC0JRRXQDObNm2aDh8+rN/85je65JJLNGDAAP3mN79Rbm5uYFa9DRs2SAr9fFJVZqYHH3xQt99+u/bs2aP4+HhlZGSoV69e8vl8MrM6t6/cz9lnn11rpuZMf2lpaYqJian3fQIAALQ1FFdABPzqV7/SVVddpXvuuUd//vOflZeXp0suuUR//etflZiYqPLycklSbGzd36L5+fmaOXOmhg8frrvvvlvnnHOO2rXz3+0bzudEmZliY2ND3vpXG6ZVBwAACI3iCoiQH/zgB5ozZ45uvfVW/fKXv9RLL72k2bNn695771VaWpok6dtvv1WvXr1q7ePuu+9W165d9dprr+mEE06otq7mM12hnHTSSfryyy81ZMiQwD4BAADQOExoAURY586d9cQTT0iSli1bJkkaNmyYJGn+/Pm1brdjxw7t2LFDZ555ZlBhtXz5cu3YsaPefWdnZ0uS3n777cYMHQAAAFVQXAHNaP369ZozZ45KSkqqLf/ss88kSd26dZMkjRs3TieeeKKeffZZvfHGG0H9PPvss0pMTFRsbKy+/PJLHTx4MLBu69atmjJlSljjmTJlijp27Khf//rX2rx5c9D6Dz/8UK+99lrY7+94derUSZK0b9++wLL6nhsDAACIFtwWCDSjgwcP6oYbbtDvfvc7jR49Wqeeeqq2bdumefPmKTExUbfddpskKTExUf/1X/+lyy67TD/96U912WWXafDgwTp27JgWL16sZcuW6dixY7r22mv16KOPKisrS1dccYUOHjyouXPnql+/ftq0aVO94+nWrZvmz5+vK6+8UmeeeabGjh2rvn37av/+/Xr33Xe1ZMkS3Xvvvbr00kub+ksjSRo4cKAk/zNpixYtUlFRkYYNG6ZZs2Y1y/4BAACOB8UV0Iz69eunN998U4899piWLl2q5557Tl26dNF5552nW2+9VZmZmYHsiBEj9Omnn+ree+/VokWLtGjRIqWkpCgzMzMwhfoDDzyg1NRUPf/88/r973+vHj166Prrr9evf/3rsJ+huuyyy/TRRx/p97//vV599VXt3r1bXbt2VUZGhubMmaPrrruuSb4WoYwYMUK33XabnnjiCc2d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1qFDB0tLS7P3338/aH1paandeeedIaftrUoNmIp9wYIFJsnmzJkTWFZeXl5n3xYF/1Y0Go0WidYazhOVU7GfeeaZtnv37sDysrIyGzVqlEmy559/PrC8rinNV69ebbGxsTZgwADbs2dP0Po33njD3nvvPTMze/vtt02S9evXzw4dOhTI7Nixw/r16xfWVOwbN260hIQE69ixo3388cdB+3v22WcDf8/MzLTOnTvXeU6ruh+Lgv9fTd145gpA1Dh69KhGjRqlc889V9nZ2erYsaO2bNmil156Sd99951mzpypQYMGhdw2NzdXN998swoLCzVx4kS1b98+ZO6MM87QG2+8oTFjxigrK0vnnXeezj33XCUlJWnTpk1auHChNm7cGPjgXy/0799fMTExuuuuu7RmzRpt375daWlpeuSRRzzbBwC0BS3tPLFr1y5lZmbqyiuvVEpKigoKCrRy5UqNGTNGY8eODes99+vXTw899JCmT5+u0047TWPHjtUpp5yinTt36u2339ZHH30UmIr9/PPP11VXXaUXXnhBZ599tsaPH6+SkhLNmzdPHTt2DGt/PXr00Ny5czVp0iRlZWUpLy9PmZmZKi4u1quvvqp9+/Zp/PjxkvxX+lavXq2f/vSnSk9P19KlS7Vo0SKlp6eHta9WKdLVHY1Ga1tNdfxGcuvWrTZz5kw766yzLDEx0WJiYqxr1642cuRIe/nll2vdzszsq6++MkkmyQoKCurMmpnt2rXLbr31VhswYIAlJSVZXFyc9ejRwy6//PJ692X+NxL2lSszs8cee8x69+5t8fHx1rNnT3vuuefq7Nui4N+KRqPRItFaw3mi8srVihUrbPLkyZaammrx8fF2xhln2H333WelpaXV8uF8GO+yZcts9OjR1qVLF4uPj7f09HQ7//zzbe7cudWuHB09etTuvPNOO/XUUy0uLs5SU1NtwoQJtmXLlrCuXFVavXq1TZo0yXr06BF47zk5ObZy5cpAZvPmzTZq1ChLTk62pKQkGzVqlO3bty/k+NvKuc353ysANA/nnHHcqZtzTmYWetooAGjlWsN5YvLkyXr66ae1fv16ZWRkRHo4UaGtnNuY0AIAAAAAPEBxBQAAAAAeoLgCAAAAAA9QXAEAAACAB5jQAkCzag0PKje1tvLQLwCEwnmidWor5zauXAEAAACAByiuAAAAAMAD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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mglearn.plots.plot_proper_processing()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "rnd = np.random.RandomState(seed=0)\n", "X = rnd.normal(size=(100, 10000))\n", "y = rnd.normal(size=(100,))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "X_selected.shape: (100, 500)\n" ] } ], "source": [ "from sklearn.feature_selection import SelectPercentile, f_regression\n", "\n", "select = SelectPercentile(score_func=f_regression, percentile=5).fit(X, y)\n", "X_selected = select.transform(X)\n", "print(\"X_selected.shape: {}\".format(X_selected.shape))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "교차 검증 점수 (릿지): 0.91\n" ] } ], "source": [ "from sklearn.model_selection import cross_val_score\n", "from sklearn.linear_model import Ridge\n", "print(\"교차 검증 점수 (릿지): {:.2f}\".format(\n", " np.mean(cross_val_score(Ridge(), X_selected, y, cv=5))))" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "교차 검증 점수 (파이프라인): -0.25\n" ] } ], "source": [ "pipe = Pipeline([(\"select\", SelectPercentile(score_func=f_regression,\n", " percentile=5)),\n", " (\"ridge\", Ridge())])\n", "print(\"교차 검증 점수 (파이프라인): {:.2f}\".format(\n", " np.mean(cross_val_score(pipe, X, y, cv=5))))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 파이프라인 인터페이스" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def fit(self, X, y):\n", " X_transformed = X\n", " for name, estimator in self.steps[:-1]:\n", " # 마지막 단계를 빼고 fit과 transform을 반복합니다\n", " X_transformed = estimator.fit_transform(X_transformed, y)\n", " # 마지막 단계 fit을 호출합니다\n", " self.steps[-1][1].fit(X_transformed, y)\n", " return self" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "def predict(self, X):\n", " X_transformed = X\n", " for step in self.steps[:-1]:\n", " # 마지막 단계를 빼고 transform을 반복합니다\n", " X_transformed = step[1].transform(X_transformed)\n", " # 마지막 단계 predict을 호출합니다\n", " return self.steps[-1][1].predict(X_transformed)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### `make_pipleline`을 사용한 파이프라인 생성" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "from sklearn.pipeline import make_pipeline\n", "# 표준적인 방법\n", "pipe_long = Pipeline([(\"scaler\", MinMaxScaler()), (\"svm\", SVC(C=100))])\n", "# 간소화된 방법\n", "pipe_short = make_pipeline(MinMaxScaler(), SVC(C=100))" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "파이프라인 단계:\n", "[('minmaxscaler', MinMaxScaler(copy=True, feature_range=(0, 1))), ('svc', SVC(C=100, cache_size=200, class_weight=None, coef0=0.0,\n", " decision_function_shape='ovr', degree=3, gamma='auto_deprecated',\n", " kernel='rbf', max_iter=-1, probability=False, random_state=None,\n", " shrinking=True, tol=0.001, verbose=False))]\n" ] } ], "source": [ "print(\"파이프라인 단계:\\n{}\".format(pipe_short.steps))" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "파이프라인 단계:\n", "[('standardscaler-1', StandardScaler(copy=True, with_mean=True, with_std=True)), ('pca', PCA(copy=True, iterated_power='auto', n_components=2, random_state=None,\n", " svd_solver='auto', tol=0.0, whiten=False)), ('standardscaler-2', StandardScaler(copy=True, with_mean=True, with_std=True))]\n" ] } ], "source": [ "from sklearn.preprocessing import StandardScaler\n", "from sklearn.decomposition import PCA\n", "\n", "pipe = make_pipeline(StandardScaler(), PCA(n_components=2), StandardScaler())\n", "print(\"파이프라인 단계:\\n{}\".format(pipe.steps))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 단계 속성에 접근하기" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "components.shape: (2, 30)\n" ] } ], "source": [ "# cancer 데이터셋에 앞서 만든 파이프라인을 적용합니다\n", "pipe.fit(cancer.data)\n", "# \"pca\" 단계의 두 개 주성분을 추출합니다\n", "components = pipe.named_steps[\"pca\"].components_\n", "print(\"components.shape: {}\".format(components.shape))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 그리드 서치 안의 파이프라인의 속성에 접근하기" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import LogisticRegression\n", "\n", "pipe = make_pipeline(StandardScaler(), LogisticRegression(solver='liblinear'))" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "param_grid = {'logisticregression__C': [0.01, 0.1, 1, 10, 100]}" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "GridSearchCV(cv=5, error_score='raise-deprecating',\n", " estimator=Pipeline(memory=None,\n", " steps=[('standardscaler', StandardScaler(copy=True, with_mean=True, with_std=True)), ('logisticregression', LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", " intercept_scaling=1, max_iter=100, multi_class='warn',\n", " n_jobs=None, penalty='l2', random_state=None, solver='liblinear',\n", " tol=0.0001, verbose=0, warm_start=False))]),\n", " fit_params=None, iid='warn', n_jobs=None,\n", " param_grid={'logisticregression__C': [0.01, 0.1, 1, 10, 100]},\n", " pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n", " scoring=None, verbose=0)" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train, X_test, y_train, y_test = train_test_split(\n", " cancer.data, cancer.target, random_state=4)\n", "grid = GridSearchCV(pipe, param_grid, cv=5)\n", "grid.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "최상의 모델:\n", "Pipeline(memory=None,\n", " steps=[('standardscaler', StandardScaler(copy=True, with_mean=True, with_std=True)), ('logisticregression', LogisticRegression(C=0.1, class_weight=None, dual=False, fit_intercept=True,\n", " intercept_scaling=1, max_iter=100, multi_class='warn',\n", " n_jobs=None, penalty='l2', random_state=None, solver='liblinear',\n", " tol=0.0001, verbose=0, warm_start=False))])\n" ] } ], "source": [ "print(\"최상의 모델:\\n{}\".format(grid.best_estimator_))" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "로지스틱 회귀 단계:\n", "LogisticRegression(C=0.1, class_weight=None, dual=False, fit_intercept=True,\n", " intercept_scaling=1, max_iter=100, multi_class='warn',\n", " n_jobs=None, penalty='l2', random_state=None, solver='liblinear',\n", " tol=0.0001, verbose=0, warm_start=False)\n" ] } ], "source": [ "print(\"로지스틱 회귀 단계:\\n{}\".format(\n", " grid.best_estimator_.named_steps[\"logisticregression\"]))" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "로지스틱 회귀 계수:\n", "[[-0.389 -0.375 -0.376 -0.396 -0.115 0.017 -0.355 -0.39 -0.058 0.209\n", " -0.495 -0.004 -0.371 -0.383 -0.045 0.198 0.004 -0.049 0.21 0.224\n", " -0.547 -0.525 -0.499 -0.515 -0.393 -0.123 -0.388 -0.417 -0.325 -0.139]]\n" ] } ], "source": [ "print(\"로지스틱 회귀 계수:\\n{}\".format(\n", " grid.best_estimator_.named_steps[\"logisticregression\"].coef_))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 전처리와 모델의 매개변수를 위한 그리드 서치" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "from sklearn.datasets import load_boston\n", "boston = load_boston()\n", "X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target,\n", " random_state=0)\n", "\n", "from sklearn.preprocessing import PolynomialFeatures\n", "pipe = make_pipeline(\n", " StandardScaler(),\n", " PolynomialFeatures(),\n", " Ridge())" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "scrolled": true }, "outputs": [], "source": [ "param_grid = {'polynomialfeatures__degree': [1, 2, 3],\n", " 'ridge__alpha': [0.001, 0.01, 0.1, 1, 10, 100]}" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "GridSearchCV(cv=5, error_score='raise-deprecating',\n", " estimator=Pipeline(memory=None,\n", " steps=[('standardscaler', StandardScaler(copy=True, with_mean=True, with_std=True)), ('polynomialfeatures', PolynomialFeatures(degree=2, include_bias=True, interaction_only=False)), ('ridge', Ridge(alpha=1.0, copy_X=True, fit_intercept=True, max_iter=None,\n", " normalize=False, random_state=None, solver='auto', tol=0.001))]),\n", " fit_params=None, iid=True, n_jobs=-1,\n", " param_grid={'polynomialfeatures__degree': [1, 2, 3], 'ridge__alpha': [0.001, 0.01, 0.1, 1, 10, 100]},\n", " pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n", " scoring=None, verbose=0)" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "grid = GridSearchCV(pipe, param_grid=param_grid, cv=5, iid=True, n_jobs=-1)\n", "grid.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/pdf": "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cGUgL0ZvbnREZXNjcmlwdG9yIC9YSGVpZ2h0IDAgPj4KZW5kb2JqCjEyIDAgb2JqClsgODkyIDIyNCA4OTIgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgODkyIDg5MiAyMjQgMjI0IDg5MiAyMjQgMjI0IDIyNCAyMjQKMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgNDQ2IDI5NyA1ODMgNTgzCjg5MiA4OTIgMjk3IDQ0NiA0NDYgNDQ2IDU4MyAyOTcgNTgzIDI5NyA0NDYgNTgzIDU4MyA1ODMgNTgzIDU4MyA1ODMgNTgzIDU4Mwo1ODMgNTgzIDI5NyAyOTcgNDQ2IDU4MyA0NDYgNjY5IDEwNTIgNjQ0IDYyNyA2MzkgNzIxIDU5NiA1NTQgNzEwIDcxOCAyNDcKNDEwIDYyNiA1MjkgODg0IDcxMCA3NTIgNTg2IDc1MiA2MTAgNTkyIDYyMSA2OTYgNjM1IDk2MSA2MTcgNjExIDU5NCA0NDYgOTYxCjQ0NiA0MzQgNDQ2IDI5NyA1NjAgNTg4IDQ5MCA1ODggNTU5IDM0MCA1ODggNTkyIDI0NCAzMDEgNTMwIDI0NCA4OTIgNTkyIDU3Nwo1ODggNTg4IDM4MyA0NzUgMzU3IDU5MiA1MzAgNzg4IDUyOCA1MzAgNDczIDQ0NiA0NDYgNDQ2IDY2OSAyMjQgODkyIDIyNCAyMjQKMjI0IDIyNCA4OTIgODkyIDg5MiAyMjQgODkyIDIyNCA4OTIgODkyIDIyNCAyMjQgMjI0IDIyNCAzMDMgMzAzIDQ0NiA0NDYgODkyCjg5MiA4OTIgODkyIDg5MiAyMjQgODkyIDg5MiAyMjQgMjI0IDIyNCAyOTcgODkyIDg5MiA4OTIgODkyIDg5MiAyMjQgNDQ2IDg5Mgo4OTIgODkyIDg5MiA4OTIgODkyIDg5MiAyMjQgNDQ2IDg5MiA0NDYgNDQ2IDg5MiAyMjQgODkyIDQ0NiA0NDYgNDQ2IDg5MiA4OTIKODkyIDg5MiA4OTIgODkyIDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDg5MiAyMjQgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0CjIyNCA4OTIgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgODkyIDg5MiAyMjQgMjI0IDIyNCAyMjQgMjI0IDg5MiA4OTIgMjI0IDIyNAoyMjQgMjI0IDIyNCAyMjQgODkyIDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDIyNCAyMjQgMjI0IDg5MiAyMjQgMjI0IDIyNCAyMjQKMjI0IDIyNCA4OTIgODkyIDIyNCAyMjQgMjI0IDIyNCAyMjQgODkyIDIyNCBdCmVuZG9iagoxNSAwIG9iago8PCAvY2lkMTQgMTYgMCBSIC9jaWQxNSAxNyAwIFIgL2NpZDE3IDE4IDAgUiAvY2lkMTggMTkgMCBSIC9jaWQxOSAyMCAwIFIKL2NpZDIwIDIxIDAgUiAvY2lkMjIgMjIgMCBSIC9jaWQyMyAyMyAwIFIgL2NpZDI0IDI0IDAgUiAvY2lkMjUgMjUgMCBSCi9jaWQyNiAyNiAwIFIgL2NpZDY0IDI3IDAgUiAvY2lkNjYgMjggMCBSIC9jaWQ2OSAyOSAwIFIgL2NpZDcwIDMwIDAgUgovY2lkNzEgMzEgMCBSIC9jaWQ3MiAzMiAwIFIgL2NpZDczIDMzIDAgUiAvY2lkNzQgMzQgMCBSIC9jaWQ3NyAzNSAwIFIKL2NpZDc4IDM2IDAgUiAvY2lkNzkgMzcgMCBSIC9jaWQ4MCAzOCAwIFIgL2NpZDgxIDM5IDAgUiAvY2lkODMgNDAgMCBSCi9jaWQ4NCA0MSAwIFIgL2NpZDg1IDQyIDAgUiAvY2lkODYgNDMgMCBSIC9jaWQ5MCA0NCAwIFIgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL0YxIDE0IDAgUiA+PgplbmRvYmoKNCAwIG9iago8PCAvQTEgPDwgL0NBIDAgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgovQTIgPDwgL0NBIDEgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PiA+PgplbmRvYmoKNSAwIG9iago8PCA+PgplbmRvYmoKNiAwIG9iago8PCA+PgplbmRvYmoKNyAwIG9iago8PCA+PgplbmRvYmoKMiAwIG9iago8PCAvQ291bnQgMSAvS2lkcyBbIDEwIDAgUiBdIC9UeXBlIC9QYWdlcyA+PgplbmRvYmoKNDUgMCBvYmoKPDwgL0NyZWF0aW9uRGF0ZSAoRDoyMDE4MTEyNjE3MjcyOCswOScwMCcpCi9DcmVhdG9yIChtYXRwbG90bGliIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcpCi9Qcm9kdWNlciAobWF0cGxvdGxpYiBwZGYgYmFja2VuZCAzLjAuMCkgPj4KZW5kb2JqCnhyZWYKMCA0NgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTYgMDAwMDAgbiAKMDAwMDAxNDMwNyAwMDAwMCBuIAowMDAwMDE0MTEzIDAwMDAwIG4gCjAwMDAwMTQxNDUgMDAwMDAgbiAKMDAwMDAxNDI0NCAwMDAwMCBuIAowMDAwMDE0MjY1IDAwMDAwIG4gCjAwMDAwMTQyODYgMDAwMDAgbiAKMDAwMDAwMDA2NSAwMDAwMCBuIAowMDAwMDAwMzk1IDAwMDAwIG4gCjAwMDAwMDAyMDggMDAwMDAgbiAKMDAwMDAwMTU3OSAwMDAwMCBuIAowMDAwMDEyNjQwIDAwMDAwIG4gCjAwMDAwMTI0MzcgMDAwMDAgbiAKMDAwMDAxMTkwMSAwMDAwMCBuIAowMDAwMDEzNjg1IDAwMDAwIG4gCjAwMDAwMDE2MDAgMDAwMDAgbiAKMDAwMDAwMTcyNCAwMDAwMCBuIAowMDAwMDAxOTE4IDAwMDAwIG4gCjAwMDAwMDIyMDkgMDAwMDAgbiAKMDAwMDAwMjQxNSAwMDAwMCBuIAowMDAwMDAyNzU4IDAwMDAwIG4gCjAwMDAwMDMzNDIgMDAwMDAgbiAKMDAwMDAwMzc4NiAwMDAwMCBuIAowMDAwMDA0NDM0IDAwMDAwIG4gCjAwMDAwMDQ1NzggMDAwMDAgbiAKMDAwMDAwNTMyMCAwMDAwMCBuIAowMDAwMDA1OTUyIDAwMDAwIG4gCjAwMDAwMDYwNzkgMDAwMDAgbiAKMDAwMDAwNjU3OCAwMDAwMCBuIAowMDAwMDA3MDAxIDAwMDAwIG4gCjAwMDAwMDc0MTQgMDAwMDAgbiAKMDAwMDAwNzcwMSAwMDAwMCBuIAowMDAwMDA4MjA5IDAwMDAwIG4gCjAwMDAwMDg0NzcgMDAwMDAgbiAKMDAwMDAwODY5NyAwMDAwMCBuIAowMDAwMDA4ODIxIDAwMDAwIG4gCjAwMDAwMDkyNTggMDAwMDAgbiAKMDAwMDAwOTU0NyAwMDAwMCBuIAowMDAwMDA5OTE2IDAwMDAwIG4gCjAwMDAwMTAzMTcgMDAwMDAgbiAKMDAwMDAxMDU4OCAwMDAwMCBuIAowMDAwMDExMDY0IDAwMDAwIG4gCjAwMDAwMTEzMzcgMDAwMDAgbiAKMDAwMDAxMTYyNCAwMDAwMCBuIAowMDAwMDE0MzY3IDAwMDAwIG4gCnRyYWlsZXIKPDwgL0luZm8gNDUgMCBSIC9Sb290IDEgMCBSIC9TaXplIDQ2ID4+CnN0YXJ0eHJlZgoxNDUyMQolJUVPRgo=\n", "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "mglearn.tools.heatmap(grid.cv_results_['mean_test_score'].reshape(3, -1),\n", " xlabel=\"ridge__alpha\", ylabel=\"polynomialfeatures__degree\",\n", " xticklabels=param_grid['ridge__alpha'],\n", " yticklabels=param_grid['polynomialfeatures__degree'], vmin=0)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "최적의 매개변수: {'polynomialfeatures__degree': 2, 'ridge__alpha': 10}\n" ] } ], "source": [ "print(\"최적의 매개변수: {}\".format(grid.best_params_))" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "테스트 세트 점수: 0.77\n" ] } ], "source": [ "print(\"테스트 세트 점수: {:.2f}\".format(grid.score(X_test, y_test)))" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "다항 특성이 없을 때 점수: 0.63\n" ] } ], "source": [ "param_grid = {'ridge__alpha': [0.001, 0.01, 0.1, 1, 10, 100]}\n", "pipe = make_pipeline(StandardScaler(), Ridge())\n", "grid = GridSearchCV(pipe, param_grid, cv=5, iid=True)\n", "grid.fit(X_train, y_train)\n", "print(\"다항 특성이 없을 때 점수: {:.2f}\".format(grid.score(X_test, y_test)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 모델 선택을 위한 그리드 서치" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "pipe = Pipeline([('preprocessing', StandardScaler()), ('classifier', SVC())])" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "from sklearn.ensemble import RandomForestClassifier\n", "\n", "param_grid = [\n", " {'classifier': [SVC()], 'preprocessing': [StandardScaler()],\n", " 'classifier__gamma': [0.001, 0.01, 0.1, 1, 10, 100],\n", " 'classifier__C': [0.001, 0.01, 0.1, 1, 10, 100]},\n", " {'classifier': [RandomForestClassifier(n_estimators=100)],\n", " 'preprocessing': [None], 'classifier__max_features': [1, 2, 3]}]" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "최적의 매개변수:\n", "{'classifier': SVC(C=10, cache_size=200, class_weight=None, coef0=0.0,\n", " decision_function_shape='ovr', degree=3, gamma=0.01, kernel='rbf',\n", " max_iter=-1, probability=False, random_state=None, shrinking=True,\n", " tol=0.001, verbose=False), 'preprocessing': StandardScaler(copy=True, with_mean=True, with_std=True), 'classifier__C': 10, 'classifier__gamma': 0.01}\n", "\n", "최상의 교차 검증 점수: 0.99\n", "테스트 세트 점수: 0.98\n" ] } ], "source": [ "X_train, X_test, y_train, y_test = train_test_split(\n", " cancer.data, cancer.target, random_state=0)\n", "\n", "grid = GridSearchCV(pipe, param_grid, cv=5)\n", "grid.fit(X_train, y_train)\n", "\n", "print(\"최적의 매개변수:\\n{}\\n\".format(grid.best_params_))\n", "print(\"최상의 교차 검증 점수: {:.2f}\".format(grid.best_score_))\n", "print(\"테스트 세트 점수: {:.2f}\".format(grid.score(X_test, y_test)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 요약 및 정리" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.6" } }, "nbformat": 4, "nbformat_minor": 1 }