scikit-learn ExtraTreesClassifier - 为什么pickle文件如此庞大? (几GB)

时间:2015-11-28 15:31:20

标签: python scikit-learn classification pickle joblib

使用python + scikit-learn,我将“极度随机树”分类器(ExtraTreesClassifier)拟合到100个特征的~900K样本数组(实数值float64)。然后我试着腌它。

我使用:

实例化了classsifier
  

cls = 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千兆字节的空间。

它是否固有地存储了一些适合或预测的原始输入数据?

1 个答案:

答案 0 :(得分:1)

单个"极随机树"可能会随着输入数据的大小而增长,因为它会创建一个决策树,将数据拆分为具有少量观察结果的叶节点(例如,要么达到参数化限制 - 默认情况下为min_samples_split=2或者pure并包含一个类。)

具有大量高度预测功能的数据将具有观察次数较多的纯节点,因此占用的空间更少。存储的大小也应该与估算器的数量大致成比例。