使用python + scikit-learn,我将“极度随机树”分类器(ExtraTreesClassifier)拟合到100个特征的~900K样本数组(实数值float64)。然后我试着腌它。
我使用:
实例化了classsifiercls = ExtraTreesClassifier(n_estimators = 10,random_state = 0, n_jobs = -1)
装修后,我尝试了两种保存方式:
pickle.dump(cls, open(classifier_file, "wb"))
并且,使用joblib:
from sklearn.externals import joblib joblib.dump(cls, classifier_file)
在常规泡菜中,它需要4千兆字节的空间! 在joblib版本中,它占用大约1.5千兆字节的空间。
它是否固有地存储了一些适合或预测的原始输入数据?
答案 0 :(得分:1)
单个"极随机树"可能会随着输入数据的大小而增长,因为它会创建一个决策树,将数据拆分为具有少量观察结果的叶节点(例如,要么达到参数化限制 - 默认情况下为min_samples_split=2
或者pure
并包含一个类。)
具有大量高度预测功能的数据将具有观察次数较多的纯节点,因此占用的空间更少。存储的大小也应该与估算器的数量大致成比例。