【发布时间】:2016-07-15 07:05:41
【问题描述】:
我有一个数据集,当将其提供给 scikit-learn 中的 RandomForestClassifier 算法时,会导致算法 tu 内存不足。我正在使用 pandas 数据框来加载数据。有没有办法让我可以迭代地训练算法,即我将数据分成十个部分并在所有部分上训练算法以完成对数据集的训练。这可能吗?
编辑完整的追溯
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
【问题讨论】:
-
你的数据有多大?
-
200,000 行和 337 列...
-
您是否尝试过将 RandomForestClassifier 应用于您的数据的一个非常小的子集?您没有打印实际错误。如果数据适合您的 RAM,如果您不使用大量树,它应该可以工作。
-
是的,我有,它确实适用于数据子集。编辑问题以包含整个回溯。
-
你的 RandomForestClassifier 的参数是什么?
标签: python python-2.7 pandas scikit-learn