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

时间:2017-07-09 19:58:56

标签: python scikit-learn pickle

我正在使用PassiveAggressiveRegressor增量分类器。每次我使用partial_fit时,我都会将模型保存到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字节。这是正常的吗?它做自己的东西?或者我的代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

这可以解释为原始泡菜使用了其他一些协议。

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

一般来说,二元泡菜的尺寸要小得多。

目前有3种不同的方案可用于酸洗。

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