2017-07-09 2 views
1

J'utilise le classificateur incrémental PassiveAggressiveRegressor. Chaque fois que j'utilise partial_fit, je sauvegarde le modèle dans un fichier pickle.taille de fichier croissante et décroissante après cPickle utilisant le classificateur incrémental sklearn

from sklearn import linear_model 
import numpy as np 
import time 

X = np.array(range(1000)) 
y = np.array([x + random.random() for x in X]) 
X = X.reshape(1000,1) 

model = linear_model.PassiveAggressiveRegressor() 
model.partial_fit(X, y) 
cPickle.dump(model, open('model.pkl', 'wb')) 


for i in range(0,10): 
    time.sleep(1) 
    model = cPickle.load(open('model.pkl', 'rb')) 
    model.partial_fit(X, y) 
    cPickle.dump(model, open('model.pkl', 'wb')) 

La chose que je ne comprends pas pourquoi le fichier est model.pkl changer la taille. Parfois, la taille de ' devient 889 octets puis descend à 886 octets. Est-ce normal? ça fait ses propres trucs? ou quelque chose ne va pas dans mon code?

Répondre

1

Ceci pourrait s'expliquer par le fait que le cornichon d'origine utilisait un autre protocole.

Par exemple, essayez de spécifier protocol=2 en tant qu'argument mot-clé au pickle.dump et de le tester à nouveau. Essayez donc de toujours spécifier le même protocole.

En général, le décapage binaire doit être beaucoup plus petit.

Il existe actuellement 3 protocoles différents qui peuvent être utilisés pour le décapage.

  1. La version de protocole 0 est le protocole ASCII d'origine et est rétrocompatible avec les versions antérieures de Python.
  2. Le protocole version 1 est l'ancien format binaire qui est également compatible avec les versions antérieures de Python.
  3. La version 2 du protocole a été introduite dans Python 2.3. Il fournit un décapage beaucoup plus efficace des classes de style nouveau.