首页 文章

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

提问于
浏览
2

使用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:

来自sklearn.externals导入joblib
joblib.dump(cls,classifier_file)

在常规泡菜中,它需要4千兆字节的空间!在joblib版本中,它占用大约1.5千兆字节的空间 .

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

1 回答

  • 1

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

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

相关问题