{
  "id": 116782,
  "title": "[HW]JaeungJeong-P4",
  "url": "/competitions/2019-fall-pr-project/discussion/116782",
  "author_name": "jaeung95",
  "post_date": "2019-11-11T12:34:33.349000",
  "votes": 0,
  "comment_count": 0,
  "views": 0,
  "content": "<h1><strong>학습데이터 준비</strong></h1>\n\n<p>```\ndataset_train = \"../input/2019-fall-pr-project/train/train/\"\ntrain_imgs = [join(dataset_train,f) for f in listdir(dataset_train)] #상대경로</p>\n\n<p>resize=[]</p>\n\n<p>for i in train_imgs:\n  img = cv2.imread(i)\n  img1=cv2.resize(img,dsize=(32,32))\n  b = np.reshape(img1, (1,np.product(img1.shape)))\n  resize.append(b[0,:])</p>\n\n<p>labels=[] \nfor i in os.listdir(dataset_train):\n  if 'dog' in i:\n    labels.append('1')\n  else:\n    labels.append('0')\n```\n캐글에 등록되어 있는 데이터들의 경로를 저장해서\n경로와 안에 있는 사진 이미지들의 이름을 리스트 형식으로 저장합니다.\n그 후,\n리스트 안에 있는 이미지 경로들을 32,32로 resize 후에 1차원 벡터로 변경 후에\nresize에 리스트 형태로 저장합니다.</p>\n\n<p>다음으로 label을 만드는 과정입니다.\n경로안에 dog가 들어있으면 1을 append 하고 cat이면 0을 append 합니다.</p>\n\n<h1>데이터 서브샘플링</h1>\n\n<p><code>resize1, subtestImage, label1, subtestLabel = train_test_split(resize, labels, test_size=0.25, random_state=42)</code></p>\n\n<p>랜덤시드 42와 25% validation을 주어 테스트 셋과 데이터 셋을 나눕니다.</p>\n\n<h1>분류기</h1>\n\n<p><code>\nclf=LinearSVC(C=1E5,class_weight='balanced')\nclf.fit(subtestImage[0:4000], subtestLabel[0:4000])\nlabel3=clf.predict(resize1[0:1000])\naccuracy_score(label1[0:1000],label3)\n</code>\n분류기는 LinearSVC를 사용했습니다. SVC와 거의 유사하지만,  차이점은 큰 데이터에 유리하다고 합니다. \n학습할 때는, 시간이 너무 오래걸려서 4000개의 데이터셋을 이용해 학습을 한 결과, 0.48값이 나왔습니다.\n그 후에 cost 값도 이리저리 바꿔보고 데이터셋과 테스트셋을 바꾸어서 학습도 해봤습니다.\n1000개의 테스트를 한 결과, 0.544 인 가장 좋은 성능을 보여준 테스트셋 4000개와 cost= 1E5를 채택을 하였습니다.</p>\n\n<h1>테스트데이터 준비</h1>\n\n<p>```\ndataset_test = \"/content/input2/test1/test1\"\ntest_imgs = [join(dataset_test,f) for f in listdir(dataset_test)]\ntest_size=[]\nfor i in test_imgs:\n  img = cv2.imread(i)\n  img1=cv2.resize(img,dsize=(32,32)) #32,32 사이즈로 변경\n  b = np.reshape(img1, (1,np.product(img1.shape))) #1d vector로 변경\n  test_size.append(b[0,:])</p>\n\n<p>```\n위에 학습데이터와 마찬가지로 test1 폴더에서의 사진들을 들고와 1차원벡터로 변경 후\n리스트로 만들어줍니다.</p>\n\n<h1>테스트 라벨 구하기</h1>\n\n<p><code>\nresult=clf.predict(test_size)\n</code>\n학습한 분류기를 이용해 라벨을 구합니다.</p>\n\n<h1>csv 파일로 변환</h1>\n\n<p><code>\nimport pandas as pd\ns = pd.Series(result)\ndata={'id':range(1,5001),'label':s}\ndf = pd.DataFrame(data)\ndf.index += 1 \ndf.to_csv('results-yk-v2.csv',index=True,index_label='id', header=True,columns=[\"label\"])\n</code>\npandas 모듈을 이용해\n결과양식과 동일하게 만든다음 csv 파일로 내보냅니다.\n그 후, 캐글에 제출하기.</p>",
  "messages": [
    {
      "id": 670404,
      "postDate": "2019-11-11T12:34:33.350Z",
      "content": "<h1><strong>학습데이터 준비</strong></h1>\n\n<p>```\ndataset_train = \"../input/2019-fall-pr-project/train/train/\"\ntrain_imgs = [join(dataset_train,f) for f in listdir(dataset_train)] #상대경로</p>\n\n<p>resize=[]</p>\n\n<p>for i in train_imgs:\n  img = cv2.imread(i)\n  img1=cv2.resize(img,dsize=(32,32))\n  b = np.reshape(img1, (1,np.product(img1.shape)))\n  resize.append(b[0,:])</p>\n\n<p>labels=[] \nfor i in os.listdir(dataset_train):\n  if 'dog' in i:\n    labels.append('1')\n  else:\n    labels.append('0')\n```\n캐글에 등록되어 있는 데이터들의 경로를 저장해서\n경로와 안에 있는 사진 이미지들의 이름을 리스트 형식으로 저장합니다.\n그 후,\n리스트 안에 있는 이미지 경로들을 32,32로 resize 후에 1차원 벡터로 변경 후에\nresize에 리스트 형태로 저장합니다.</p>\n\n<p>다음으로 label을 만드는 과정입니다.\n경로안에 dog가 들어있으면 1을 append 하고 cat이면 0을 append 합니다.</p>\n\n<h1>데이터 서브샘플링</h1>\n\n<p><code>resize1, subtestImage, label1, subtestLabel = train_test_split(resize, labels, test_size=0.25, random_state=42)</code></p>\n\n<p>랜덤시드 42와 25% validation을 주어 테스트 셋과 데이터 셋을 나눕니다.</p>\n\n<h1>분류기</h1>\n\n<p><code>\nclf=LinearSVC(C=1E5,class_weight='balanced')\nclf.fit(subtestImage[0:4000], subtestLabel[0:4000])\nlabel3=clf.predict(resize1[0:1000])\naccuracy_score(label1[0:1000],label3)\n</code>\n분류기는 LinearSVC를 사용했습니다. SVC와 거의 유사하지만,  차이점은 큰 데이터에 유리하다고 합니다. \n학습할 때는, 시간이 너무 오래걸려서 4000개의 데이터셋을 이용해 학습을 한 결과, 0.48값이 나왔습니다.\n그 후에 cost 값도 이리저리 바꿔보고 데이터셋과 테스트셋을 바꾸어서 학습도 해봤습니다.\n1000개의 테스트를 한 결과, 0.544 인 가장 좋은 성능을 보여준 테스트셋 4000개와 cost= 1E5를 채택을 하였습니다.</p>\n\n<h1>테스트데이터 준비</h1>\n\n<p>```\ndataset_test = \"/content/input2/test1/test1\"\ntest_imgs = [join(dataset_test,f) for f in listdir(dataset_test)]\ntest_size=[]\nfor i in test_imgs:\n  img = cv2.imread(i)\n  img1=cv2.resize(img,dsize=(32,32)) #32,32 사이즈로 변경\n  b = np.reshape(img1, (1,np.product(img1.shape))) #1d vector로 변경\n  test_size.append(b[0,:])</p>\n\n<p>```\n위에 학습데이터와 마찬가지로 test1 폴더에서의 사진들을 들고와 1차원벡터로 변경 후\n리스트로 만들어줍니다.</p>\n\n<h1>테스트 라벨 구하기</h1>\n\n<p><code>\nresult=clf.predict(test_size)\n</code>\n학습한 분류기를 이용해 라벨을 구합니다.</p>\n\n<h1>csv 파일로 변환</h1>\n\n<p><code>\nimport pandas as pd\ns = pd.Series(result)\ndata={'id':range(1,5001),'label':s}\ndf = pd.DataFrame(data)\ndf.index += 1 \ndf.to_csv('results-yk-v2.csv',index=True,index_label='id', header=True,columns=[\"label\"])\n</code>\npandas 모듈을 이용해\n결과양식과 동일하게 만든다음 csv 파일로 내보냅니다.\n그 후, 캐글에 제출하기.</p>",
      "rawMarkdown": "# **학습데이터 준비**\n```\ndataset_train = \"../input/2019-fall-pr-project/train/train/\"\ntrain_imgs = [join(dataset_train,f) for f in listdir(dataset_train)] #상대경로\n\nresize=[]\n\nfor i in train_imgs:\n  img = cv2.imread(i)\n  img1=cv2.resize(img,dsize=(32,32))\n  b = np.reshape(img1, (1,np.product(img1.shape)))\n  resize.append(b[0,:])\n\nlabels=[] \nfor i in os.listdir(dataset_train):\n  if 'dog' in i:\n    labels.append('1')\n  else:\n    labels.append('0')\n```\n캐글에 등록되어 있는 데이터들의 경로를 저장해서\n경로와 안에 있는 사진 이미지들의 이름을 리스트 형식으로 저장합니다.\n그 후,\n리스트 안에 있는 이미지 경로들을 32,32로 resize 후에 1차원 벡터로 변경 후에\nresize에 리스트 형태로 저장합니다.\n\n다음으로 label을 만드는 과정입니다.\n경로안에 dog가 들어있으면 1을 append 하고 cat이면 0을 append 합니다.\n\n#데이터 서브샘플링 \n`resize1, subtestImage, label1, subtestLabel = train_test_split(resize, labels, test_size=0.25, random_state=42)`\n\n랜덤시드 42와 25% validation을 주어 테스트 셋과 데이터 셋을 나눕니다.\n\n#분류기\n```\nclf=LinearSVC(C=1E5,class_weight='balanced')\nclf.fit(subtestImage[0:4000], subtestLabel[0:4000])\nlabel3=clf.predict(resize1[0:1000])\naccuracy_score(label1[0:1000],label3)\n```\n분류기는 LinearSVC를 사용했습니다. SVC와 거의 유사하지만,  차이점은 큰 데이터에 유리하다고 합니다. \n학습할 때는, 시간이 너무 오래걸려서 4000개의 데이터셋을 이용해 학습을 한 결과, 0.48값이 나왔습니다.\n그 후에 cost 값도 이리저리 바꿔보고 데이터셋과 테스트셋을 바꾸어서 학습도 해봤습니다.\n1000개의 테스트를 한 결과, 0.544 인 가장 좋은 성능을 보여준 테스트셋 4000개와 cost= 1E5를 채택을 하였습니다.\n\n#테스트데이터 준비\n```\ndataset_test = \"/content/input2/test1/test1\"\ntest_imgs = [join(dataset_test,f) for f in listdir(dataset_test)]\ntest_size=[]\nfor i in test_imgs:\n  img = cv2.imread(i)\n  img1=cv2.resize(img,dsize=(32,32)) #32,32 사이즈로 변경\n  b = np.reshape(img1, (1,np.product(img1.shape))) #1d vector로 변경\n  test_size.append(b[0,:])\n\n```\n위에 학습데이터와 마찬가지로 test1 폴더에서의 사진들을 들고와 1차원벡터로 변경 후\n리스트로 만들어줍니다.\n#테스트 라벨 구하기\n```\nresult=clf.predict(test_size)\n```\n학습한 분류기를 이용해 라벨을 구합니다.\n#csv 파일로 변환\n```\nimport pandas as pd\ns = pd.Series(result)\ndata={'id':range(1,5001),'label':s}\ndf = pd.DataFrame(data)\ndf.index += 1 \ndf.to_csv('results-yk-v2.csv',index=True,index_label='id', header=True,columns=[\"label\"])\n```\npandas 모듈을 이용해\n결과양식과 동일하게 만든다음 csv 파일로 내보냅니다.\n그 후, 캐글에 제출하기."
    }
  ],
  "comments": [],
  "raw_markdown_by_id": {
    "670404": "# **학습데이터 준비**\n```\ndataset_train = \"../input/2019-fall-pr-project/train/train/\"\ntrain_imgs = [join(dataset_train,f) for f in listdir(dataset_train)] #상대경로\n\nresize=[]\n\nfor i in train_imgs:\n  img = cv2.imread(i)\n  img1=cv2.resize(img,dsize=(32,32))\n  b = np.reshape(img1, (1,np.product(img1.shape)))\n  resize.append(b[0,:])\n\nlabels=[] \nfor i in os.listdir(dataset_train):\n  if 'dog' in i:\n    labels.append('1')\n  else:\n    labels.append('0')\n```\n캐글에 등록되어 있는 데이터들의 경로를 저장해서\n경로와 안에 있는 사진 이미지들의 이름을 리스트 형식으로 저장합니다.\n그 후,\n리스트 안에 있는 이미지 경로들을 32,32로 resize 후에 1차원 벡터로 변경 후에\nresize에 리스트 형태로 저장합니다.\n\n다음으로 label을 만드는 과정입니다.\n경로안에 dog가 들어있으면 1을 append 하고 cat이면 0을 append 합니다.\n\n#데이터 서브샘플링 \n`resize1, subtestImage, label1, subtestLabel = train_test_split(resize, labels, test_size=0.25, random_state=42)`\n\n랜덤시드 42와 25% validation을 주어 테스트 셋과 데이터 셋을 나눕니다.\n\n#분류기\n```\nclf=LinearSVC(C=1E5,class_weight='balanced')\nclf.fit(subtestImage[0:4000], subtestLabel[0:4000])\nlabel3=clf.predict(resize1[0:1000])\naccuracy_score(label1[0:1000],label3)\n```\n분류기는 LinearSVC를 사용했습니다. SVC와 거의 유사하지만,  차이점은 큰 데이터에 유리하다고 합니다. \n학습할 때는, 시간이 너무 오래걸려서 4000개의 데이터셋을 이용해 학습을 한 결과, 0.48값이 나왔습니다.\n그 후에 cost 값도 이리저리 바꿔보고 데이터셋과 테스트셋을 바꾸어서 학습도 해봤습니다.\n1000개의 테스트를 한 결과, 0.544 인 가장 좋은 성능을 보여준 테스트셋 4000개와 cost= 1E5를 채택을 하였습니다.\n\n#테스트데이터 준비\n```\ndataset_test = \"/content/input2/test1/test1\"\ntest_imgs = [join(dataset_test,f) for f in listdir(dataset_test)]\ntest_size=[]\nfor i in test_imgs:\n  img = cv2.imread(i)\n  img1=cv2.resize(img,dsize=(32,32)) #32,32 사이즈로 변경\n  b = np.reshape(img1, (1,np.product(img1.shape))) #1d vector로 변경\n  test_size.append(b[0,:])\n\n```\n위에 학습데이터와 마찬가지로 test1 폴더에서의 사진들을 들고와 1차원벡터로 변경 후\n리스트로 만들어줍니다.\n#테스트 라벨 구하기\n```\nresult=clf.predict(test_size)\n```\n학습한 분류기를 이용해 라벨을 구합니다.\n#csv 파일로 변환\n```\nimport pandas as pd\ns = pd.Series(result)\ndata={'id':range(1,5001),'label':s}\ndf = pd.DataFrame(data)\ndf.index += 1 \ndf.to_csv('results-yk-v2.csv',index=True,index_label='id', header=True,columns=[\"label\"])\n```\npandas 모듈을 이용해\n결과양식과 동일하게 만든다음 csv 파일로 내보냅니다.\n그 후, 캐글에 제출하기."
  }
}