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)
हालाँकि, आपको अतिरिक्त डेटा को सहेजना चाहिए ताकि आप भविष्य में अपने मॉडल को पुनः प्राप्त कर सकें, या गंभीर परिणाम भुगतें पड़ें (जैसे कि स्केलेर के पुराने संस्करण में बंद होना) ।
से प्रलेखन :
भविष्य के संस्करणों के साथ समान मॉडल के पुनर्निर्माण के लिए, अतिरिक्त मेटाडेटा को अचार वाले मॉडल के साथ सहेजा जाना चाहिए:
प्रशिक्षण डेटा, जैसे एक अपरिवर्तनीय स्नैपशॉट का संदर्भ
मॉडल उत्पन्न करने के लिए अजगर स्रोत कोड का उपयोग किया जाता है
स्किटिट-लर्न के संस्करण और इसकी निर्भरताएं
प्रशिक्षण डेटा पर प्राप्त क्रॉस सत्यापन स्कोर
यह एन्सेम्बल अनुमानकों के लिए विशेष रूप से सचtree.pyx
है जो साइथन (जैसे IsolationForest
) में लिखे गए मॉड्यूल पर भरोसा करते हैं , क्योंकि यह कार्यान्वयन के लिए एक युग्मन बनाता है, जो स्केलेर के संस्करणों के बीच स्थिर होने की गारंटी नहीं है। इसने अतीत में असंगत परिवर्तन देखे हैं।
यदि आपके मॉडल बहुत बड़े हो जाते हैं और लोडिंग एक उपद्रव बन जाता है, तो आप अधिक कुशल का उपयोग भी कर सकते हैं joblib
। प्रलेखन से:
स्किकिट के विशिष्ट मामले में, जॉबलिब के प्रतिस्थापन pickle
( joblib.dump
और joblib.load
) का उपयोग करना अधिक दिलचस्प हो सकता है , जो उन वस्तुओं पर अधिक कुशल होता है जो आंतरिक रूप से बड़ी संख्या में कैरी लेती हैं जैसा कि अक्सर फिट किए गए स्किकिट-लर्न एस्टीमेटर्स के लिए होता है, लेकिन केवल अचार कर सकते हैं डिस्क और स्ट्रिंग के लिए नहीं: