객체는 크게 두 가지 방식으로 존재할 수 있습니다.
만약 머신러닝 모델을 만들었고, 그 모델을 엔지니어에게 전달해야 한다면, 바이트열 방식으로 넘기는 것이 효율적입니다. 짧은 코드면 모를까, 매우 길게 쓰여진 코드를 복사 붙여넣기로 전달할 수는 없습니다. 즉, 동료에게 머신러닝 모델을 넘기기 위해서는 인메모리 형식의 데이터를 바이트열 방식으로 바꿔야 합니다. 이를 부호화라고 합니다.
그럼 머신러닝 모델을 부호화해보겠습니다. 부호화에 사용할 라이브러리는 pickle입니다.
target = 'target'
features = df.drop(columns = target).columns
X_train = df[features]
y_train = df[target]
model = RandomForestClassifier()
model.fit(X_train, y_train)
with open('model.pkl', 'wb') as pickle_file:
pickle.dump(model, pickle_file)
모델을 부호화하면 다음과 같은 상황에 이용할 수 있습니다.
부호화한 모델은 다음과 같이 복호화하여 사용할 수 있습니다.
model = None
with open('pipe_model.pkl', 'rb') as pickle_road_file:
model = pickle.load(pickle_road_file)
y_pred = model.predict(X_test)
model=None
: 복호화한 model을 담을 변수를 만듭니다.rb
: 읽는 방식으로 pickle 파일을 엽니다.pickle.load
: load 함수로 부호화된 파일을 복호화하여 model 변수에 지정합니다.model.predict(X_test)
: 부호화하기 이전과 같은 방식으로 model을 사용합니다.