在scikit学习中迭代训练算法



我有一个数据集,当它被赋予scikit-learn中的RandomForestClassifier算法时,会导致算法tu内存不足。我正在使用pandas数据帧来加载数据。有没有一种方法可以让我迭代训练算法,即我将数据分为十个部分,并在所有部分上训练算法,以完成对数据集的训练。这可能吗?

编辑完整TRACEBACK

Traceback (most recent call last):
  File "F:majorsolution-1.py", line 234, in <module>
    prep_data()
  File "F:majorsolution-1.py", line 160, in prep_data
    selector.fit(data[predictors], data['ED2'])
  File "C:Python27libsite-packagespandascoreframe.py", line 1963, in __getitem__
    return self._getitem_array(key)
  File "C:Python27libsite-packagespandascoreframe.py", line 2008, in _getitem_array
    return self.take(indexer, axis=1, convert=True)
  File "C:Python27libsite-packagespandascoregeneric.py", line 1368, in take
    self._consolidate_inplace()
  File "C:Python27libsite-packagespandascoregeneric.py", line 2411, in _consolidate_inplace
    self._protect_consolidate(f)
  File "C:Python27libsite-packagespandascoregeneric.py", line 2402, in _protect_consolidate
    result = f()
  File "C:Python27libsite-packagespandascoregeneric.py", line 2410, in f
    self._data = self._data.consolidate()
  File "C:Python27libsite-packagespandascoreinternals.py", line 3194, in consolidate
    bm._consolidate_inplace()
  File "C:Python27libsite-packagespandascoreinternals.py", line 3199, in _consolidate_inplace
    self.blocks = tuple(_consolidate(self.blocks))
  File "C:Python27libsite-packagespandascoreinternals.py", line 4189, in _consolidate
    _can_consolidate=_can_consolidate)
  File "C:Python27libsite-packagespandascoreinternals.py", line 4212, in _merge_blocks
    new_values = new_values[argsort]
MemoryError

尝试将数据保存在csv文件中,以了解数据的大小。我们会说这个数量是D
N将是用于创建RandomForestClassifier的树数
RandomForest会为您的数据创建N个引导程序,因此它会创建DxN的新数据
如果DxN比您的RAM大,则是的,您有问题,因为您正在使用sklearn。

在转到集成模型之前,您可能需要使用单个模型

是的,您可以迭代训练数据,使用交叉验证对数据进行切片,其代码由emanuele编写在链接中。https://github.com/emanuele/kaggle_pbr/blob/master/blend.py

有关组装的更多参考,请查看此链接。http://mlwave.com/kaggle-ensembling-guide/

我对内存错误不太了解,但我可以说数据不适合你的内存。先尝试数据的子集,然后再尝试完整数据。

相关内容

  • 没有找到相关文章

最新更新