我有一个数据集,当RandomForestClassifier
中的scikit-learn
算法被赋予时会导致算法失效。我正在使用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
答案 0 :(得分:0)
尝试将数据保存在csv文件中以了解它的大小。我们会说这个数量 D
N 将是您用来创建RandomForestClassifier的树数。
RandomForest为您的数据创建N个引导程序,因此它会创建新数据DxN。
如果 DxN 更大 更大 RAM ,是的,你有问题,因为你正在使用sklearn。
您可能希望在转到整体模型之前使用单一模型。
答案 1 :(得分:0)
是的,您可以迭代地训练数据,使用交叉验证来分割数据,代码由emanuele提供链接。 https://github.com/emanuele/kaggle_pbr/blob/master/blend.py
有关集合的更多参考,请查看此链接。 http://mlwave.com/kaggle-ensembling-guide/
我对内存错误了解不多,但我可以说数据不适合您的内存。首先尝试数据子集然后填满。