2016-03-28 61 views
-1

我有一个数据集,当给RandomForestClassifier中的一个算法scikit-learn时,会导致算法运行内存不足。我正在使用pandas数据框来加载数据。有没有办法让我可以迭代地训练算法,即我将把数据分成十个部分,并在所有部分上训练算法以完成对数据集的训练。这可能吗?在scikit-learn中迭代训练算法

编辑COMPLETE TRACEBACK

Traceback (most recent call last): 
    File "F:\major\solution-1.py", line 234, in <module> 
    prep_data() 
    File "F:\major\solution-1.py", line 160, in prep_data 
    selector.fit(data[predictors], data['ED2']) 
    File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 1963, in __getitem__ 
    return self._getitem_array(key) 
    File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 2008, in _getitem_array 
    return self.take(indexer, axis=1, convert=True) 
    File "C:\Python27\lib\site-packages\pandas\core\generic.py", line 1368, in take 
    self._consolidate_inplace() 
    File "C:\Python27\lib\site-packages\pandas\core\generic.py", line 2411, in _consolidate_inplace 
    self._protect_consolidate(f) 
    File "C:\Python27\lib\site-packages\pandas\core\generic.py", line 2402, in _protect_consolidate 
    result = f() 
    File "C:\Python27\lib\site-packages\pandas\core\generic.py", line 2410, in f 
    self._data = self._data.consolidate() 
    File "C:\Python27\lib\site-packages\pandas\core\internals.py", line 3194, in consolidate 
    bm._consolidate_inplace() 
    File "C:\Python27\lib\site-packages\pandas\core\internals.py", line 3199, in _consolidate_inplace 
    self.blocks = tuple(_consolidate(self.blocks)) 
    File "C:\Python27\lib\site-packages\pandas\core\internals.py", line 4189, in _consolidate 
    _can_consolidate=_can_consolidate) 
    File "C:\Python27\lib\site-packages\pandas\core\internals.py", line 4212, in _merge_blocks 
    new_values = new_values[argsort] 
MemoryError 
+0

你的数据的大小是多少? – dooms

+0

200,000行和337列... –

+0

您是否尝试将RandomForestClassifier应用于您的数据的一小部分?你没有打印实际的错误。如果数据适合你的内存,它应该工作,如果你不使用大量的树。 – dooms

回答

0

尝试保存在一个CSV文件数据就知道它有多大。我们会说这个数量是D
将是您用来创建RandomForestClassifier的树的数量。
RandomForest为您的数据创建N个引导程序,因此它会创建DxN的新数据。
如果DxN比你RAM,是的,你有一个问题,因为你使用sklearn。

您可能想在使用合奏模型之前使用单一模型