{"cells":[{"metadata":{"colab":{},"colab_type":"code","id":"JadR869D2K7L","trusted":false},"cell_type":"code","source":"\nfrom sklearn.neighbors import KNeighborsClassifier\nfrom sklearn.model_selection import train_test_split\nimport numpy as np\nimport cv2 \nimport os\nimport glob\n\n\n\n\n\n","execution_count":null,"outputs":[]},{"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":261},"colab_type":"code","id":"y-JkqXus-Awq","outputId":"4b63b76a-927f-4818-dc6d-1b51bc8412c4","trusted":false},"cell_type":"code","source":"\ndataset_train = \"/content/input2/train/\"\n\ndataset_train_y_name = glob.glob('../input/2019-fall-pr-project/train/train/*.jpg')\n\n\ndataset_train_x = np.empty((0,32,32,3), int)\ndataset_train_y = np.empty((0,1), int)\nprint(dataset_train_x.shape)\nprint(dataset_train_y.shape)\n\nfor i in range (2000):\n  image = cv2.imread(dataset_train_y_name[i])\n  \n  if os.path.basename(dataset_train_y_name[i])[0:3]=='dog':\n    dataset_train_y = np.vstack([dataset_train_y, 1])\n  if os.path.basename(dataset_train_y_name[i])[0:3]=='cat':\n    dataset_train_y = np.vstack([dataset_train_y, 0])\n    \n  image = cv2.resize(image, dsize=(32, 32))\n  dataset_train_x = np.vstack([dataset_train_x, image[None,...]])\n  \n  \n\n\nprint(dataset_train_x.shape)\nprint(dataset_train_y.shape)\n\n\n\n\n\n\n","execution_count":null,"outputs":[]},{"metadata":{"colab":{},"colab_type":"code","id":"7vF_sa0r-Fca","trusted":false},"cell_type":"code","source":"\nfrom sklearn.model_selection import train_test_split\n\ndataset_train_x = np.ravel(dataset_train_x)\ndataset_train_x = dataset_train_x.reshape(2000,3072)\n\n\nXtrain, Xtest, Ytrain, Ytest = train_test_split(dataset_train_x, dataset_train_y, random_state=42)\n\n\n\n\n\n","execution_count":null,"outputs":[]},{"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"colab_type":"code","id":"K9QhM25L-GYa","outputId":"d686e1df-5d0f-4e98-bc47-36d1f0e13cc2","trusted":false},"cell_type":"code","source":"\n\n\nfrom sklearn.svm import SVC\nfrom sklearn.decomposition import PCA as RandomizedPCA\n\nfrom sklearn.pipeline import make_pipeline\n\n\nprint(Xtrain.shape)\nprint(Ytrain.shape)\nprint(Xtest.shape)\nprint(Ytest.shape)\n\n\n#설정\npca = RandomizedPCA(n_components=150, whiten=True, random_state=42)\nsvc = SVC(kernel='rbf', class_weight='balanced')\nmodel = make_pipeline(pca, svc)\n\nfrom sklearn.model_selection import GridSearchCV\n\nparam_grid = {'svc__C': [5, 6, 7, 8],\n              'svc__gamma': [0.005, 0.007 ,0.01]}\ngrid = GridSearchCV(model, param_grid)\n\ngrid.fit(Xtrain, Ytrain)\nprint('파라미터 결정 : ', grid.best_params_)\n\nmodel = grid.best_estimator_  #최고로 좋은 모델\nyfit = model.predict(Xtest)   #로 예측\n\nfrom sklearn.metrics import classification_report\nprint('정확도 : \\n', classification_report(Ytest, yfit))\n\n\n\n\n","execution_count":null,"outputs":[]},{"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":112},"colab_type":"code","id":"NknMfw3G-HkC","outputId":"e9103145-5080-49ac-ac5f-5e0dc0307b15","trusted":false},"cell_type":"code","source":"\ndataset_test = \"/content/input2/test1/\"\n\ndataset_test_y_name = glob.glob('../input/2019-fall-pr-project/test1/test1/*.jpg')\n\n\ndataset_test_x = np.empty((0,32,32,3), int)\n\nprint(dataset_test_x.shape)\n\nfor i in range (5000):\n  image = cv2.imread(dataset_test_y_name[i])\n    \n  image = cv2.resize(image, dsize=(32, 32))\n  dataset_test_x = np.vstack([dataset_test_x, image[None,...]])\n  \n  \n\n\nprint(dataset_test_x.shape)\n\n\ndataset_test_x = np.ravel(dataset_test_x)\ndataset_test_x = dataset_test_x.reshape(5000,3072)\n\n\n\nprint(dataset_test_x.shape)\n\n\n\n\n\n\n\n","execution_count":null,"outputs":[]},{"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":36},"colab_type":"code","id":"YC0SwWT2IL3Q","outputId":"c4a2fe17-d84a-4981-9b84-1ec357c43d26","trusted":false},"cell_type":"code","source":"\n\ntestpre = model.predict(dataset_test_x)   #로 예측\n\n\n\n","execution_count":null,"outputs":[]},{"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":279},"colab_type":"code","id":"uGkTzr1tIzNB","outputId":"ba90707b-c628-4c98-ce04-1398e19f9e26","trusted":false},"cell_type":"code","source":"\n# numpy 를 Pandas 이용하여 결과 파일로 저장\n\n\nimport pandas as pd\n\nresult = { 'label' : testpre }\ndf = pd.DataFrame(testpre)\ndf = df.replace('dog',1)\ndf = df.replace('cat',0)\n\n\n\ndf.to_csv('results-baeksohyeon.csv',index=True, header=False)","execution_count":null,"outputs":[]},{"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":55},"colab_type":"code","id":"FjLgBPEUA6j7","outputId":"48e8b182-eb08-4c36-e149-b88ea3ae14fb","trusted":false},"cell_type":"code","source":"! kaggle competitions submit -c 2019-fall-pr-project -f results-baeksohyeon.csv -m \"baeksohyeon\"","execution_count":null,"outputs":[]}],"metadata":{"accelerator":"GPU","colab":{"collapsed_sections":[],"name":"PR_Midterm_P4(17011830).ipynb의 사본","provenance":[]},"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.6.6"}},"nbformat":4,"nbformat_minor":1}