Python 메모리 8GB로 kaggle을 싸울 때 알아야 할 것
배경
최근 유행 카글에 도전해 보았습니다.
하지만, 특징량을 늘리면 데이터가 거대해져, 「Memory Error!」에 시달렸습니다
그래도 kaggle을 포기할 수 없었던 나는 메모리와 잘 어울리는 길을 모색했다.
[1] 환경 변화
원래 메모리 8GB로 도전하는 것이 무모하므로 "Google Colaboratory"를 이용하면 좋을 것 같습니다.
・메모리 : 약 13GB
・무료
· 브라우저에서 이동
・귀찮은 환경 구축은 일절 불필요
· 순식간에 파이썬 (Jupyter Notebook) 환경을 얻을 수 있습니다.
사용법에 관해서는 아래의 링크가 상세합니다.
Google 공동체사 시작
공동체 데이터 입출력 요약
겸손하게 말하면 훌륭합니다.
데이터의 입출력에 버릇이 있습니다만, 익숙해지면 기본적으로는 Jupyter Notebook을 그대로 이용할 수 있습니다
덤으로 GPU 환경도 무료로 얻을 수 있기 때문에, 사용하기 편리한 툴입니다
[2] 메모리를 먹고 있는 변수를 찾아 삭제
변수의 크기는 아래에서 확인할 수 있습니다.
import sys
sys.getsizeof(val)
메모리를 먹고 있는 변수를 큰 쪽에서 표시해 보겠습니다
import sys
import pandas as pd
print(pd.DataFrame([[val for val in dir()], [sys.getsizeof(eval(val)) for val in dir()]],
index=['name','size']).T.sort_values('size', ascending=False).reset_index(drop=True))
name size
0 data 570142137
1 test 90020943
마지막으로 불필요한 변수를 삭제하고 gc를 해제합니다.
import gc
del data, test
gc.collect()
[3] DataFrame의 입출력에 「feather」를 사용
pickle에 의한 입출력은 빠르고 편리합니다.
그러나 메모리를 꽤 먹는 것이 힘든 곳에서 가난한 환경에서는 메모리 오류가 발생할 수 있습니다.
그렇다고 단순히 pd.read_csv
는 시간이 너무 걸린다는 문제가 있습니다.
회피하기 위한 라이브러리는 여러 가지 있는 것 같습니다만, 깃털 를 이용하면 좋을 것 같습니다
설치는 아래의 명령으로 할 수 있습니다
!pip install feather-format
중요한 속도는 아래와 같이 pandas와 비교하면 상당히 빠릅니다.
입력
%time df = feather.read_dataframe('test.csv')
CPU 시간: 사용자 78 ms, sys: 49 ms, total: 127 ms
벽 시간: 680 ms
%time df = pd.read_csv('test.csv')
CPU 시간: 사용자 846 ms, sys: 25 ms, total: 871 ms
Wall time: 5.8 s
출력
%time df.to_feather('test.csv')
CPU 시간: 사용자 942 ms, sys: 55 ms, total: 997 ms
Wall time: 16.3 s
%time df.to_csv('test.csv')
CPU 시간: 사용자 6.14 s, sys: 245 ms, total: 6.39 s
Wall time: 1min 11s
결론
이것으로 kaggle의 스타트 라인에 세웠습니다!
(「PC 살 수 있어」라고 하는 쯔코미는, 없이 부탁합니다・・・ )
Reference
이 문제에 관하여(Python 메모리 8GB로 kaggle을 싸울 때 알아야 할 것), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hmdhmd/items/2efb620abda7b20c6711
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
원래 메모리 8GB로 도전하는 것이 무모하므로 "Google Colaboratory"를 이용하면 좋을 것 같습니다.
・메모리 : 약 13GB
・무료
· 브라우저에서 이동
・귀찮은 환경 구축은 일절 불필요
· 순식간에 파이썬 (Jupyter Notebook) 환경을 얻을 수 있습니다.
사용법에 관해서는 아래의 링크가 상세합니다.
Google 공동체사 시작
공동체 데이터 입출력 요약
겸손하게 말하면 훌륭합니다.
데이터의 입출력에 버릇이 있습니다만, 익숙해지면 기본적으로는 Jupyter Notebook을 그대로 이용할 수 있습니다
덤으로 GPU 환경도 무료로 얻을 수 있기 때문에, 사용하기 편리한 툴입니다
[2] 메모리를 먹고 있는 변수를 찾아 삭제
변수의 크기는 아래에서 확인할 수 있습니다.
import sys
sys.getsizeof(val)
메모리를 먹고 있는 변수를 큰 쪽에서 표시해 보겠습니다
import sys
import pandas as pd
print(pd.DataFrame([[val for val in dir()], [sys.getsizeof(eval(val)) for val in dir()]],
index=['name','size']).T.sort_values('size', ascending=False).reset_index(drop=True))
name size
0 data 570142137
1 test 90020943
마지막으로 불필요한 변수를 삭제하고 gc를 해제합니다.
import gc
del data, test
gc.collect()
[3] DataFrame의 입출력에 「feather」를 사용
pickle에 의한 입출력은 빠르고 편리합니다.
그러나 메모리를 꽤 먹는 것이 힘든 곳에서 가난한 환경에서는 메모리 오류가 발생할 수 있습니다.
그렇다고 단순히 pd.read_csv
는 시간이 너무 걸린다는 문제가 있습니다.
회피하기 위한 라이브러리는 여러 가지 있는 것 같습니다만, 깃털 를 이용하면 좋을 것 같습니다
설치는 아래의 명령으로 할 수 있습니다
!pip install feather-format
중요한 속도는 아래와 같이 pandas와 비교하면 상당히 빠릅니다.
입력
%time df = feather.read_dataframe('test.csv')
CPU 시간: 사용자 78 ms, sys: 49 ms, total: 127 ms
벽 시간: 680 ms
%time df = pd.read_csv('test.csv')
CPU 시간: 사용자 846 ms, sys: 25 ms, total: 871 ms
Wall time: 5.8 s
출력
%time df.to_feather('test.csv')
CPU 시간: 사용자 942 ms, sys: 55 ms, total: 997 ms
Wall time: 16.3 s
%time df.to_csv('test.csv')
CPU 시간: 사용자 6.14 s, sys: 245 ms, total: 6.39 s
Wall time: 1min 11s
결론
이것으로 kaggle의 스타트 라인에 세웠습니다!
(「PC 살 수 있어」라고 하는 쯔코미는, 없이 부탁합니다・・・ )
Reference
이 문제에 관하여(Python 메모리 8GB로 kaggle을 싸울 때 알아야 할 것), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hmdhmd/items/2efb620abda7b20c6711
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import sys
sys.getsizeof(val)
import sys
import pandas as pd
print(pd.DataFrame([[val for val in dir()], [sys.getsizeof(eval(val)) for val in dir()]],
index=['name','size']).T.sort_values('size', ascending=False).reset_index(drop=True))
name size
0 data 570142137
1 test 90020943
import gc
del data, test
gc.collect()
pickle에 의한 입출력은 빠르고 편리합니다.
그러나 메모리를 꽤 먹는 것이 힘든 곳에서 가난한 환경에서는 메모리 오류가 발생할 수 있습니다.
그렇다고 단순히
pd.read_csv
는 시간이 너무 걸린다는 문제가 있습니다.회피하기 위한 라이브러리는 여러 가지 있는 것 같습니다만, 깃털 를 이용하면 좋을 것 같습니다
설치는 아래의 명령으로 할 수 있습니다
!pip install feather-format
중요한 속도는 아래와 같이 pandas와 비교하면 상당히 빠릅니다.
입력
%time df = feather.read_dataframe('test.csv')
CPU 시간: 사용자 78 ms, sys: 49 ms, total: 127 ms
벽 시간: 680 ms
%time df = pd.read_csv('test.csv')
CPU 시간: 사용자 846 ms, sys: 25 ms, total: 871 ms
Wall time: 5.8 s
출력
%time df.to_feather('test.csv')
CPU 시간: 사용자 942 ms, sys: 55 ms, total: 997 ms
Wall time: 16.3 s
%time df.to_csv('test.csv')
CPU 시간: 사용자 6.14 s, sys: 245 ms, total: 6.39 s
Wall time: 1min 11s
결론
이것으로 kaggle의 스타트 라인에 세웠습니다!
(「PC 살 수 있어」라고 하는 쯔코미는, 없이 부탁합니다・・・ )
Reference
이 문제에 관하여(Python 메모리 8GB로 kaggle을 싸울 때 알아야 할 것), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hmdhmd/items/2efb620abda7b20c6711
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Python 메모리 8GB로 kaggle을 싸울 때 알아야 할 것), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hmdhmd/items/2efb620abda7b20c6711텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)