대회를 마친 kaggle competition 중 이진 이미지 분류 대회인 Statoil/C-CORE Iceberg Classifier Challenge 의 데이터와 Notebook을 분석하고 필사하며 공부하는 중, 생각보다 빠르게 첫 번째 장애물에 부딪혔다.

 

바로, 캐글 Kernel 상 작업을 위해서는 *.json 파일을 읽어야하는데, 주어진 데이터셋은 *.7z로 되어있는게 아닌가!

심지어 kernel 상에서는 *.7z의 압축을 해제할 수도 없는 상황.

 

캐글코리아의 운영진이자, 캐글 마스터이신 유한님의 강의를 살펴봐도 아쉽게 이 부분에 대한 내용은 찾을 수 없었다. (꿀팁이 난무하는 엄청난 강의...ㄷㄷ 꼭 한 번쯤 들으시길)

 

(잘 알지는 못하지만, 아마도 끝난 competition의 경우, 데이터셋의 제공을 압축파일 형태로 바꿔 제공하면서 생긴 문제가 아닌가 싶다. 위 competition의 유한님 youtube 링크는 아래 참조)

 

유한님의 강의 참조 : (https://www.youtube.com/watch?v=lDnTS3h8HRk)

 

문제를 해결하고자 캐글상에 같은 문제를 겪고 있는 사람이 있는가 싶어, 검색한 결과 캐글의 운영팀에서 답변한 자료가 존재함을 알 수 있었다.

다음의 코드와 해결책은 아래 링크에서 답변된 캐글팀의 Paul Mooney의 해결책을 컴퍼티션에 맞게 수정한 것이다.

혹시나 유한님 강의를 따라가면서 필자와 같은 문제를 겪는분들에게 도움이 되길!

 

참조 : (https://www.kaggle.com/general/129520#752512)

 

Accessing files under *.7z archive files | Data Science and Machine Learning

Events and topics specific to our community | Kaggle Forum

www.kaggle.com

 

CODE=========================================================

 

!pip install pyunpack
!pip install patool

os.system('apt-get install p7zip')

 

import os
from pyunpack import Archive
import shutil

 

if not os.path.exists('/kaggle/train/') :
    os.makedirs('/kaggle/train/')

Archive('/kaggle/input/statoil-iceberg-classifier-challenge/train.json.7z').extractall('/kaggle/train/')

if not os.path.exists('/kaggle/test/') :
    os.makedirs('/kaggle/test/')

Archive('/kaggle/input/statoil-iceberg-classifier-challenge/test.json.7z').extractall('/kaggle/test/')

for dirname, _, filenames in os.walk('/kaggle/'):
    for filename in filenames:
        print(os.path.join(dirname, filename))

 

 

train = pd.read_json('../train/data/processed/train.json')
test = pd.read_json('../test/data/processed/test.json')

===============================================================

 

코드는 Archive 라는 라이브러리를 통해 *.7z 파일을 다른폴더로 추출하는 과정을 보여준다. 다른폴더가 중요하다.

코드를 실험해본 결과, 기존폴더와 다른폴더를 새로 만들어서 만들어진 폴더로 추출하지 않는다면, 이상하게 Unpack 되지 않는다는 오류가 발생한다. (왜 이런건지 설명 가능하신분 댓글로..)

 

이에 필자는 기존 input 또는 working 폴더 대신에 train, test 라는 폴더를 새로 생성하여, 그 안에 추출하여

작업을하도록 하였다.

 

이만, Keep going!

'프로그래밍 > 기타' 카테고리의 다른 글

[dbf to csv] .dbf 확장자 .csv 변환  (1) 2020.06.23

+ Recent posts