2017-07-09 8 views
1

私はPassiveAggressiveRegressorインクリメンタルクラシファイアを使用しています。私がpartial_fitを使うたびに、モデルをpickleファイルに保存します。インクリメンタルクラシファイアSklearnを使用したcPickleの後にファイルサイズが増減する

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')) 

サイズを変更したファイルmodel.pklである理由私は取得しない事があります。場合によっては ' のサイズは889バイトになり、次に886バイトになります。それは普通ですか?それは自分のものをやっている?私のコードで何か問題がありますか?

答えて

1

これは、元のピクルスが他のプロトコルを使用しているという事実によって説明できます。

たとえば、のキーワード引数としてprotocol=2を指定してもう一度テストしてみてください。常に同じプロトコルを指定してみてください。

一般に、バイナリーピックルのサイズははるかに小さくする必要があります。

現在、酸洗いに使用できる3つのプロトコルがあります。

  1. プロトコルバージョン0は元のASCIIプロトコルであり、以前のバージョンのPythonと下位互換性があります。
  2. プロトコルバージョン1は旧バージョンのPythonと互換性のある古いバイナリ形式です。
  3. プロトコルバージョン2はPython 2.3で導入されました。新しいスタイルのクラスのはるかに効率的な酸洗いを提供します。
関連する問題