我使用来自python的scikit lib的随机森林的分类器来做我的练习.结果会改变每个运行时间.所以我运行1000次并获得平均结果.
我将对象rf保存到文件中以便稍后通过pickle.dump()进行预测,并获得大约4MB的文件.但是,sys.getsizeof(rf)只给我36个字节
rf = RandomForestClassifier(n_estimators = 50)
rf.fit(matX, vecY)
pickle.dump(rf,'var.sav')
Run Code Online (Sandbox Code Playgroud)
我的问题:
getsizeof()为您提供仅对象的内存占用,而不是该对象引用的任何其他值.您需要递归对象以查找所有属性的总大小,以及这些属性所包含的任何内容等.
酸洗是一种序列化格式.序列化需要存储元数据以及对象的内容.内存大小和腌菜大小只有粗略的相关性.
Pickles是字节流,如果您需要更紧凑的字节流,请使用压缩.
如果你是存储在ZIP文件的泡菜,你的数据已经被压缩; 在将ZIP存储在ZIP中之前压缩pickle将无济于事,因为已经压缩的数据在额外的ZIP压缩之后运行风险变大,而不是由于元数据开销和典型压缩数据中缺少重复数据.