sklearn
추정기는 추정 된 훈련 된 특성을 쉽게 저장할 수있는 방법을 구현합니다. 어떤 추정기는 __getstate__
메소드 자체를 구현 하지만, 다른 것들은 단순히 객체 내부 사전을 저장하는 기본 구현 을 GMM
사용합니다 .
def __getstate__(self):
try:
state = super(BaseEstimator, self).__getstate__()
except AttributeError:
state = self.__dict__.copy()
if type(self).__module__.startswith('sklearn.'):
return dict(state.items(), _sklearn_version=__version__)
else:
return state
모델을 디스크에 저장하는 권장 방법은 pickle
모듈 을 사용하는 것입니다 .
from sklearn import datasets
from sklearn.svm import SVC
iris = datasets.load_iris()
X = iris.data[:100, :2]
y = iris.target[:100]
model = SVC()
model.fit(X,y)
import pickle
with open('mymodel','wb') as f:
pickle.dump(model,f)
그러나 향후에 모델을 재교육하거나 이전 버전의 sklearn에 고정되는 등 심각한 결과를 겪을 수 있도록 추가 데이터를 저장해야합니다 .
로부터 문서 :
이후 버전의 scikit-learn을 사용하여 유사한 모델을 재 구축하려면 추가 된 메타 데이터를 절인 모델과 함께 저장해야합니다.
훈련 데이터 (예 : 불변 스냅 샷에 대한 참조)
모델을 생성하는 데 사용되는 파이썬 소스 코드
scikit-learn의 버전 및 해당 종속성
교육 데이터에서 얻은 교차 검증 점수
tree.pyx
Cython으로 작성된 모듈에 의존하는 Ensemble 추정기 (예 IsolationForest
:)는 구현에 커플 링을 생성하므로 sklearn 버전간에 안정적으로 보장되지 않기 때문에 특히 그렇습니다. 과거에는 호환되지 않는 변경 사항이 있습니다.
모델이 매우 커지고 로딩이 성가신 경우 더 효율적으로 사용할 수도 있습니다 joblib
. 설명서에서 :
scikit의 특정 경우에는 joblib의 pickle
( joblib.dump
& joblib.load
) 대체를 사용 하는 것이 더 흥미로울 수 있습니다. 문자열이 아닌 디스크에 :