【问题标题】: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 的空间。

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

【问题讨论】:

    标签: python scikit-learn classification pickle joblib


    【解决方案1】:

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

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

    【讨论】:

    • 嘿,谢谢你澄清了它,并且非常了解它是如何工作的。
    猜你喜欢
    • 2014-04-20
    • 2022-06-13
    • 2016-02-28
    • 1970-01-01
    • 2022-01-02
    • 2018-03-03
    • 2018-10-17
    • 2021-05-06
    • 2010-10-06
    相关资源
    最近更新 更多