gpt4 book ai didi

python - 解决 scikit-learn One Vs Rest 随机森林的缓慢解封问题

转载 作者:行者123 更新时间:2023-12-01 05:50:32 26 4
gpt4 key购买 nike

我有一个应用程序,我正在其中加载非常大的 python 对象——它们是序列化的 scikit-learn 分类器及其关联的词汇表。

分类器足够大(大约 1-100 MB),将它们加载到内存中是一项艰巨的任务。实际读取速度很快,但 unpickle 需要很长时间,对于 4MB 的分类器来说大约需要 10 秒。

是否有比 cPickle.dumps/cPickle.loads 更快的方法来序列化/反序列化对象?

其他信息:

分类器是 10 个元素的一对一随机森林的实例。分类器接受了大约 1,000 个样本、大约 500 个特征和 52 个可能的标签的训练。 min_密度 参数设置为 0。

<小时/>

cPickle.load 的 cProfile 输出:

   Ordered by: standard name

ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 300.168 300.168 <ipython-input-4-9b8a128f290d>:1(loader)
1 0.899 0.899 301.067 301.067 <string>:1(<module>)
51380 288.151 0.006 288.151 0.006 __init__.py:93(__RandomState_ctor)
51380 0.059 0.000 0.404 0.000 fromnumeric.py:1774(amax)
1 11.613 11.613 300.168 300.168 {cPickle.load}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
51380 0.344 0.000 0.344 0.000 {method 'max' of 'numpy.ndarray' objects}
1 0.000 0.000 0.000 0.000 {open}

我正在 github.com/scikit-learn 上提出有关此问题的问题。

最佳答案

您是否尝试过使用 joblib 选择器?它捆绑在 sklearn 包中:

>>> from sklearn.externals import joblib
>>> joblib.dump(model, '/path/to/model.pkl')
>>> model_copy = joblib.load('/path/to/model.pkl')

编辑:实际上对于随机森林,使用最高协议(protocol)的默认酸洗似乎更快:

>>> from cPickle import dump, load, HIGHEST_PROTOCOL
>>> dump(model, open('/tmp/model_highest.pkl', 'wb'), HIGHEST_PROTOCOL)
>>> load(open('/tmp/model_highest.pkl', 'rb'))

编辑2:根据您的个人资料报告,问题似乎是伪随机数生成器实例的取消。您能否提供您用于训练模型的确切 python 代码片段以及数据集的形状,并将其与分析报告一起作为 bug 包含在 scikit-learn 项目的 github 问题跟踪器上?

关于python - 解决 scikit-learn One Vs Rest 随机森林的缓慢解封问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14472574/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com