{
  "id": 116646,
  "title": "ImageClassification_17011660_김민주",
  "url": "/competitions/2019-fall-pr-project/discussion/116646",
  "author_name": "Joyce Kim",
  "post_date": "2019-11-10T13:57:54.994000",
  "votes": 0,
  "comment_count": 0,
  "views": 0,
  "content": "<h2>학습 데이터 준비</h2>\n\n<p><code>\ndataset_train = \"/content/input2/train/\"\nlists = paths.list_images(dataset_train)\ndata = []\nlabel = []\nfor l in lists:\n  image = cv2.imread(l)\n  a = cv2.resize(image, (32, 32))\n  a = a.reshape(-1)\n  data.append(a)\n  if l[28:31] == 'cat':\n    label.append(0)\n  else:\n    label.append(1)\n</code>\npaths의 list_images를 이용하여 dataset_train 경로에 있는 image들의 경로를 저장합니다. \n(/content/input2/train/train/cat.7213.jpg와 같은 형식으로 저장됩니다.)</p>\n\n<p>그 후 cv2.imread를 통하여 영상을 불러온 후 그 영상을 cv2.resize를 이용해 32 * 32 사이즈로 바꿔주었습니다. 그리고 reshape을 이용하여 영상을 1d vector로 변환한 후 data라는 이름의 배열에 저장하였습니다.</p>\n\n<p>label은 파일 이름의 28~30 위치의 글자가 cat이면 0으로, dog면 1로 저장해주었습니다.</p>\n\n<p><code>\nX = np.array(data)\ny = np.array(label)\n</code>\n그 후, 저는 numpy가 익숙한 편이어서 data와 label을 numpy array 형식으로 바꾸어서 X, y라는 이름으로 저장해주었습니다.</p>\n\n<h2>데이터 셋 서브 샘플링 &amp; Train-Validation 나누기</h2>\n\n<p><code>\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)\n</code>\ntrain-validation으로 나누기 위하여 scikit learn의 train_test_split을 이용하였습니다.\n25%를 validation으로 사용하였습니다.</p>\n\n<p><code>\nX_train = X_train[:1000]\ny_train = y_train[:1000]\n</code>\n그대로 학습을 진행하니 시간이 오래걸려 데이터 셋을 서브 샘플링 하였습니다.</p>\n\n<h2>학습 기반 분류기 설계</h2>\n\n<p><code>\nclf = SVC(kernel='rbf', gamma='auto')\nclf.fit(X_train, y_train)\n</code>\nSVM을 사용하여 학습을 진행하였습니다.\nkernel은 rbf로, gamma는 auto로 설정해주었습니다.</p>\n\n<p><code>\ny_predict = clf.predict(X_test)\naccuracy_score(y_test, y_predict)\n</code>\n학습시킨 모델로 정확도를 측정하였습니다.\n약 0.51 정도의 정확도를 보였습니다.</p>\n\n<h2>테스트 데이터 준비</h2>\n\n<p>```\ndataset_test = \"/content/input2/test1/\"</p>\n\n<p>lists = paths.list_images(dataset_test)\ndata = []\nfor l in lists:\n  a = cv2.resize(cv2.imread(l), (32, 32))\n  a = a.reshape(-1)\n  data.append(a)</p>\n\n<p>X = np.array(data)\n```\ntrain data를 불러왔던 것과 같은 방식으로 test 데이터를 불러왔습니다.</p>\n\n<h2>학습한 모델을 이용하여 테스트 데이터의 라벨 구하기</h2>\n\n<p><code>\ny_pred = clf.predict(X)\n</code>\n학습시켰던 모델을 이용해 테스트 데이터의 라벨을 구하였습니다.</p>\n\n<h2>결과 파일로 저장하여 Kaggle 제출 준비</h2>\n\n<p><code>\ndf = pd.DataFrame(y_pred)\ndf.to_csv('results-yk-v2.csv',index=True, header=False)\n</code>\n테스트 데이터의 라벨을 pandas dataframe으로 변환한 후,\n이를 csv로 전환하였습니다.</p>\n\n<h2>Kaggle에 파일 제출</h2>\n\n<p><code>\n! kaggle competitions submit -c 2019-fall-pr-project -f /content/asdf.csv -m \"minjukim-1810\"\n</code>\n이와 같이 Kaggle에 파일을 제출하였습니다.</p>\n\n<p>감사합니다.</p>",
  "messages": [
    {
      "id": 669805,
      "postDate": "2019-11-10T13:57:54.993Z",
      "content": "<h2>학습 데이터 준비</h2>\n\n<p><code>\ndataset_train = \"/content/input2/train/\"\nlists = paths.list_images(dataset_train)\ndata = []\nlabel = []\nfor l in lists:\n  image = cv2.imread(l)\n  a = cv2.resize(image, (32, 32))\n  a = a.reshape(-1)\n  data.append(a)\n  if l[28:31] == 'cat':\n    label.append(0)\n  else:\n    label.append(1)\n</code>\npaths의 list_images를 이용하여 dataset_train 경로에 있는 image들의 경로를 저장합니다. \n(/content/input2/train/train/cat.7213.jpg와 같은 형식으로 저장됩니다.)</p>\n\n<p>그 후 cv2.imread를 통하여 영상을 불러온 후 그 영상을 cv2.resize를 이용해 32 * 32 사이즈로 바꿔주었습니다. 그리고 reshape을 이용하여 영상을 1d vector로 변환한 후 data라는 이름의 배열에 저장하였습니다.</p>\n\n<p>label은 파일 이름의 28~30 위치의 글자가 cat이면 0으로, dog면 1로 저장해주었습니다.</p>\n\n<p><code>\nX = np.array(data)\ny = np.array(label)\n</code>\n그 후, 저는 numpy가 익숙한 편이어서 data와 label을 numpy array 형식으로 바꾸어서 X, y라는 이름으로 저장해주었습니다.</p>\n\n<h2>데이터 셋 서브 샘플링 &amp; Train-Validation 나누기</h2>\n\n<p><code>\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)\n</code>\ntrain-validation으로 나누기 위하여 scikit learn의 train_test_split을 이용하였습니다.\n25%를 validation으로 사용하였습니다.</p>\n\n<p><code>\nX_train = X_train[:1000]\ny_train = y_train[:1000]\n</code>\n그대로 학습을 진행하니 시간이 오래걸려 데이터 셋을 서브 샘플링 하였습니다.</p>\n\n<h2>학습 기반 분류기 설계</h2>\n\n<p><code>\nclf = SVC(kernel='rbf', gamma='auto')\nclf.fit(X_train, y_train)\n</code>\nSVM을 사용하여 학습을 진행하였습니다.\nkernel은 rbf로, gamma는 auto로 설정해주었습니다.</p>\n\n<p><code>\ny_predict = clf.predict(X_test)\naccuracy_score(y_test, y_predict)\n</code>\n학습시킨 모델로 정확도를 측정하였습니다.\n약 0.51 정도의 정확도를 보였습니다.</p>\n\n<h2>테스트 데이터 준비</h2>\n\n<p>```\ndataset_test = \"/content/input2/test1/\"</p>\n\n<p>lists = paths.list_images(dataset_test)\ndata = []\nfor l in lists:\n  a = cv2.resize(cv2.imread(l), (32, 32))\n  a = a.reshape(-1)\n  data.append(a)</p>\n\n<p>X = np.array(data)\n```\ntrain data를 불러왔던 것과 같은 방식으로 test 데이터를 불러왔습니다.</p>\n\n<h2>학습한 모델을 이용하여 테스트 데이터의 라벨 구하기</h2>\n\n<p><code>\ny_pred = clf.predict(X)\n</code>\n학습시켰던 모델을 이용해 테스트 데이터의 라벨을 구하였습니다.</p>\n\n<h2>결과 파일로 저장하여 Kaggle 제출 준비</h2>\n\n<p><code>\ndf = pd.DataFrame(y_pred)\ndf.to_csv('results-yk-v2.csv',index=True, header=False)\n</code>\n테스트 데이터의 라벨을 pandas dataframe으로 변환한 후,\n이를 csv로 전환하였습니다.</p>\n\n<h2>Kaggle에 파일 제출</h2>\n\n<p><code>\n! kaggle competitions submit -c 2019-fall-pr-project -f /content/asdf.csv -m \"minjukim-1810\"\n</code>\n이와 같이 Kaggle에 파일을 제출하였습니다.</p>\n\n<p>감사합니다.</p>",
      "rawMarkdown": "##  학습 데이터 준비\n```\ndataset_train = \"/content/input2/train/\"\nlists = paths.list_images(dataset_train)\ndata = []\nlabel = []\nfor l in lists:\n  image = cv2.imread(l)\n  a = cv2.resize(image, (32, 32))\n  a = a.reshape(-1)\n  data.append(a)\n  if l[28:31] == 'cat':\n    label.append(0)\n  else:\n    label.append(1)\n```\npaths의 list_images를 이용하여 dataset_train 경로에 있는 image들의 경로를 저장합니다. \n(/content/input2/train/train/cat.7213.jpg와 같은 형식으로 저장됩니다.)\n\n그 후 cv2.imread를 통하여 영상을 불러온 후 그 영상을 cv2.resize를 이용해 32 * 32 사이즈로 바꿔주었습니다. 그리고 reshape을 이용하여 영상을 1d vector로 변환한 후 data라는 이름의 배열에 저장하였습니다.\n\nlabel은 파일 이름의 28~30 위치의 글자가 cat이면 0으로, dog면 1로 저장해주었습니다.\n\n```\nX = np.array(data)\ny = np.array(label)\n```\n그 후, 저는 numpy가 익숙한 편이어서 data와 label을 numpy array 형식으로 바꾸어서 X, y라는 이름으로 저장해주었습니다.\n\n## 데이터 셋 서브 샘플링 &amp; Train-Validation 나누기\n\n```\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)\n```\ntrain-validation으로 나누기 위하여 scikit learn의 train_test_split을 이용하였습니다.\n25%를 validation으로 사용하였습니다.\n\n```\nX_train = X_train[:1000]\ny_train = y_train[:1000]\n```\n그대로 학습을 진행하니 시간이 오래걸려 데이터 셋을 서브 샘플링 하였습니다.\n\n\n## 학습 기반 분류기 설계\n\n```\nclf = SVC(kernel='rbf', gamma='auto')\nclf.fit(X_train, y_train)\n```\nSVM을 사용하여 학습을 진행하였습니다.\nkernel은 rbf로, gamma는 auto로 설정해주었습니다.\n\n```\ny_predict = clf.predict(X_test)\naccuracy_score(y_test, y_predict)\n```\n학습시킨 모델로 정확도를 측정하였습니다.\n약 0.51 정도의 정확도를 보였습니다.\n\n\n## 테스트 데이터 준비\n```\ndataset_test = \"/content/input2/test1/\"\n\nlists = paths.list_images(dataset_test)\ndata = []\nfor l in lists:\n  a = cv2.resize(cv2.imread(l), (32, 32))\n  a = a.reshape(-1)\n  data.append(a)\n\nX = np.array(data)\n```\ntrain data를 불러왔던 것과 같은 방식으로 test 데이터를 불러왔습니다.\n\n## 학습한 모델을 이용하여 테스트 데이터의 라벨 구하기\n```\ny_pred = clf.predict(X)\n```\n학습시켰던 모델을 이용해 테스트 데이터의 라벨을 구하였습니다.\n\n\n## 결과 파일로 저장하여 Kaggle 제출 준비\n```\ndf = pd.DataFrame(y_pred)\ndf.to_csv('results-yk-v2.csv',index=True, header=False)\n```\n테스트 데이터의 라벨을 pandas dataframe으로 변환한 후,\n이를 csv로 전환하였습니다.\n\n## Kaggle에 파일 제출\n```\n! kaggle competitions submit -c 2019-fall-pr-project -f /content/asdf.csv -m \"minjukim-1810\"\n```\n이와 같이 Kaggle에 파일을 제출하였습니다.\n\n감사합니다."
    }
  ],
  "comments": [],
  "raw_markdown_by_id": {
    "669805": "##  학습 데이터 준비\n```\ndataset_train = \"/content/input2/train/\"\nlists = paths.list_images(dataset_train)\ndata = []\nlabel = []\nfor l in lists:\n  image = cv2.imread(l)\n  a = cv2.resize(image, (32, 32))\n  a = a.reshape(-1)\n  data.append(a)\n  if l[28:31] == 'cat':\n    label.append(0)\n  else:\n    label.append(1)\n```\npaths의 list_images를 이용하여 dataset_train 경로에 있는 image들의 경로를 저장합니다. \n(/content/input2/train/train/cat.7213.jpg와 같은 형식으로 저장됩니다.)\n\n그 후 cv2.imread를 통하여 영상을 불러온 후 그 영상을 cv2.resize를 이용해 32 * 32 사이즈로 바꿔주었습니다. 그리고 reshape을 이용하여 영상을 1d vector로 변환한 후 data라는 이름의 배열에 저장하였습니다.\n\nlabel은 파일 이름의 28~30 위치의 글자가 cat이면 0으로, dog면 1로 저장해주었습니다.\n\n```\nX = np.array(data)\ny = np.array(label)\n```\n그 후, 저는 numpy가 익숙한 편이어서 data와 label을 numpy array 형식으로 바꾸어서 X, y라는 이름으로 저장해주었습니다.\n\n## 데이터 셋 서브 샘플링 &amp; Train-Validation 나누기\n\n```\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)\n```\ntrain-validation으로 나누기 위하여 scikit learn의 train_test_split을 이용하였습니다.\n25%를 validation으로 사용하였습니다.\n\n```\nX_train = X_train[:1000]\ny_train = y_train[:1000]\n```\n그대로 학습을 진행하니 시간이 오래걸려 데이터 셋을 서브 샘플링 하였습니다.\n\n\n## 학습 기반 분류기 설계\n\n```\nclf = SVC(kernel='rbf', gamma='auto')\nclf.fit(X_train, y_train)\n```\nSVM을 사용하여 학습을 진행하였습니다.\nkernel은 rbf로, gamma는 auto로 설정해주었습니다.\n\n```\ny_predict = clf.predict(X_test)\naccuracy_score(y_test, y_predict)\n```\n학습시킨 모델로 정확도를 측정하였습니다.\n약 0.51 정도의 정확도를 보였습니다.\n\n\n## 테스트 데이터 준비\n```\ndataset_test = \"/content/input2/test1/\"\n\nlists = paths.list_images(dataset_test)\ndata = []\nfor l in lists:\n  a = cv2.resize(cv2.imread(l), (32, 32))\n  a = a.reshape(-1)\n  data.append(a)\n\nX = np.array(data)\n```\ntrain data를 불러왔던 것과 같은 방식으로 test 데이터를 불러왔습니다.\n\n## 학습한 모델을 이용하여 테스트 데이터의 라벨 구하기\n```\ny_pred = clf.predict(X)\n```\n학습시켰던 모델을 이용해 테스트 데이터의 라벨을 구하였습니다.\n\n\n## 결과 파일로 저장하여 Kaggle 제출 준비\n```\ndf = pd.DataFrame(y_pred)\ndf.to_csv('results-yk-v2.csv',index=True, header=False)\n```\n테스트 데이터의 라벨을 pandas dataframe으로 변환한 후,\n이를 csv로 전환하였습니다.\n\n## Kaggle에 파일 제출\n```\n! kaggle competitions submit -c 2019-fall-pr-project -f /content/asdf.csv -m \"minjukim-1810\"\n```\n이와 같이 Kaggle에 파일을 제출하였습니다.\n\n감사합니다."
  }
}