scikit-learn ExtraTreesClassifier - 为啥泡菜文件这么大? (几 GB)

Posted

技术标签:

【中文标题】scikit-learn ExtraTreesClassifier - 为啥泡菜文件这么大? (几 GB)【英文标题】:scikit-learn ExtraTreesClassifier - Why is the pickle file so huge? (Several GB)scikit-learn ExtraTreesClassifier - 为什么泡菜文件这么大? (几 GB) 【发布时间】:2016-03-02 13:57:40 【问题描述】:

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

我实例化了分类器:

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)

在普通的 pickle 中,它占用了 4+ GB 的空间! 在 joblib 版本中,它占用了大约 1.5 GB 的空间。

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

嘿,谢谢你澄清了它,并且非常了解它是如何工作的。

以上是关于scikit-learn ExtraTreesClassifier - 为啥泡菜文件这么大? (几 GB)的主要内容,如果未能解决你的问题,请参考以下文章

无法安装 scikit-learn

scikit-learn学习基础知识四

[机器学习与scikit-learn-3]:scikit-learn模型地图与模型选择

scikit-learn:如何使用拟合概率模型?

使用 yml 环境获取 scikit-learn 版本警告

sklearn (scikit-learn) 逻辑回归包——设置训练的分类系数。