sklearn
tahmin ediciler, bir tahmin edicinin ilgili eğitimli özelliklerini kaydetmenizi kolaylaştırmak için yöntemler uygular. Bazı tahminciler __getstate__
yöntemleri kendileri uygularlar , ancak diğerleri GMM
sadece nesnelerin iç sözlüğünü kaydeden temel uygulamayı kullanır gibi :
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
Modelinizi diske kaydetmenin önerilen yöntemi pickle
modülü kullanmaktır :
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)
Ancak, ileride modelinizi yeniden eğitmek veya korkunç sonuçlara maruz kalmak için (sklearn'un eski bir sürümüne kilitlenmek gibi) ek verileri kaydetmeniz gerekir .
Gönderen belgeler :
Scikit-learn'ın gelecekteki sürümleriyle benzer bir modeli yeniden oluşturmak için, turşu model boyunca ek meta veriler kaydedilmelidir:
Egzersiz verileri, örneğin değişmez bir anlık görüntü referansı
Modeli oluşturmak için kullanılan python kaynak kodu
Scikit-learn sürümleri ve bağımlılıkları
Eğitim verilerinden alınan çapraz geçerlilik puanı
Bu özellikle , aşağıdakilere dayanan Topluluk tahmincileri için geçerlidir .tree.pyx
Cython ile yazılmış modüle (örneğin IsolationForest
) , çünkü sklearn sürümleri arasında kararlı olması garanti edilmeyen uygulamaya bir bağlantı oluşturur. Geçmişte geriye dönük olarak uyumsuz değişiklikler gördü.
Modelleriniz çok büyük olursa ve yükleme sıkıntı haline gelirse, daha verimli olan joblib
. Belgelerden:
Scikitin özel durumunda, işlenmiş scikit-öğrenme tahmin edicileri için genellikle olduğu gibi dahili olarak büyük numpy dizileri taşıyan nesneler üzerinde daha verimli olan joblib'in pickle
( joblib.dump
& joblib.load
) yerine kullanılması daha ilginç olabilir, ancak sadece turşu yapabilir bir dizeye değil diske: