데이터사이언스

Pickle과 Write 차이점 + With ... as 구문

ghtis1798 2020. 12. 29. 17:01

바이너리 파일 저장

머신러닝 모델을 학습하는데는 오랜 시간이 걸리기 때문에 매 번 학습을 시키는 것은 비효율적입니다.

그래서 이전 포스팅에선 학습한 모델들을 바이너리 파일로 저장했습니다.

western-sky.tistory.com/16?category=829395

 

머신러닝을 활용한 중고차 거래가 예측 - 회귀모형 모델링

Regression 모델 모델링의 경우 총 4가지 모델로 회귀 분석을 진행한 뒤, Stacking Ensemble 메타모델로 예측하였습니다. 1. 일반 선형회귀 2. 릿지(Ridge) 3. 라소(Lasso) 4. LightGBM --> Stacking Ensemble 데..

western-sky.tistory.com

이 때 사용한 라이브러리가 바로 Pickle입니다.

pickle은 객체를 저장하는 '라이브러리'입니다.

With ... as 구문은 파일입출력시 자동으로 Close를 처리하는 '명령어'고요.

파일을 읽고 쓸 때 중요한 것은 파일을 항상 마지막에 닫아주어야 합니다.

하지만 프로그래머들이 실수로 Close하는 것을 까먹는 실수를 종종 범합니다.

그래서 With ... as 구문을 사용하는 것입니다.

With ... as 구문은 파일을 자동으로 닫아주는 역할을 하기 때문이죠.

pickle과 write의 차이는 '객체'를 바이너리 파일로 저장할 수 있느냐는 것입니다.

pickle은 객체도 파일로 저장할 수 있지만 write은 문자열(텍스트)만 가능합니다.

with open("file_name.txt", "wb") as file:
	pickle.dump(object, file)

file_name.txt 파일을 wb방식으로 open한 뒤, file이라 부르겠다는 의미이고,

두 번째 줄은 객체(object)를 file에 저장하겠다는 의미입니다.

write함수의 간단한 예시입니다.

with open("file_name.txt", "w") as file:
	file.write(string)

똑같이 file_name.txt 파일을 w방식으로 open해서, file이라 부르고,

두 번째 줄에서는 file에 문자열 string을 write한다는 뜻입니다.

가장 큰 차이점은 pickle은 텍스트가 아닌 '객체'를 파일로 저장할 수 있다는 것에 있습니다.