Python 使用增量分类器sklearn在cPickle后增加和减少文件大小

Python 使用增量分类器sklearn在cPickle后增加和减少文件大小,python,scikit-learn,pickle,Python,Scikit Learn,Pickle,我正在使用增量分类器。每次使用时,我都会将模型保存到pickle文件中 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() mod

我正在使用增量分类器。每次使用时,我都会将模型保存到pickle文件中

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文件会改变大小。有时是
s大小变为889字节,然后降至886字节。这正常吗?它在做自己的事情?或者我的代码有问题?

这可以通过原始pickle使用其他协议来解释

例如,尝试指定
protocol=2
作为
pickle.dump
的关键字参数,然后再次测试它。因此,请尝试始终指定相同的协议

一般来说,二进制pickle的大小应该小得多

目前有3种不同的协议可用于酸洗

  • 协议版本0是原始ASCII协议,与Python的早期版本向后兼容
  • 协议版本1是旧的二进制格式,它也与Python的早期版本兼容
  • Python2.3中引入了协议版本2。它提供了对新样式类更有效的酸洗