sklearn随机森林分类python中的内存分配错误

sklearn随机森林分类python中的内存分配错误,python,scikit-learn,random-forest,Python,Scikit Learn,Random Forest,我正在尝试在279900个实例上运行sklearn random forest classification,这些实例有5个属性和1个类。但是我在尝试在拟合线上运行分类时遇到内存分配错误,它无法训练分类器本身。对如何解决这个问题有什么建议吗 数据是a x、 y、日、周、准确度 x和y是坐标 天是一个月的哪一天(1-30) 周是一周中的哪一天(1-7) 准确度是一个整数 代码: 错误: line 366, in fit builder.build(self.tree_, X, y, sam

我正在尝试在279900个实例上运行sklearn random forest classification,这些实例有5个属性和1个类。但是我在尝试在拟合线上运行分类时遇到内存分配错误,它无法训练分类器本身。对如何解决这个问题有什么建议吗

数据是a

x、 y、日、周、准确度

x和y是坐标 天是一个月的哪一天(1-30) 周是一周中的哪一天(1-7) 准确度是一个整数

代码:

错误:

line 366, in fit
    builder.build(self.tree_, X, y, sample_weight, X_idx_sorted)
  File "sklearn/tree/_tree.pyx", line 145, in sklearn.tree._tree.DepthFirstTreeBuilder.build
  File "sklearn/tree/_tree.pyx", line 244, in sklearn.tree._tree.DepthFirstTreeBuilder.build
  File "sklearn/tree/_tree.pyx", line 735, in sklearn.tree._tree.Tree._add_node
  File "sklearn/tree/_tree.pyx", line 707, in sklearn.tree._tree.Tree._resize_c
  File "sklearn/tree/_utils.pyx", line 39, in sklearn.tree._utils.safe_realloc
MemoryError: could not allocate 10206838784 bytes

从scikit学习文档中。:“控制树大小的参数的默认值(例如,最大深度、最小样本叶等)导致完全生长和未运行的树,这些树在某些数据集上可能非常大。为减少内存消耗,应通过设置这些参数值来控制树的复杂性和大小。“


我会尝试调整这些参数。另外,你可以试试mem。如果您的计算机内存太少,请尝试在Google Collaborator上运行探查器。

我最近遇到了同一个内存器。但是我通过减少训练数据的大小而不是修改模型参数来修复它。我的OOB值为0.98,这意味着该模型不太可能过度拟合。

请尝试Google Colaboratory。您可以连接本地主机或托管运行时。对于n_估计器=10000,它对我有效。

我尝试使用max_features=“log2”、min_samples_split=3、min_samples_leaf=2作为参数,但我仍然面临同样的问题,我可能尝试使用max depth。我有一个16GB的ramAnd,这取决于我拥有的功能数量,深度不能足够大,对吗?我肯定会设置一个最大深度。决策树在高深度上过度拟合。通常深度为6就足够了,但这当然取决于你的模型。当我尝试运行25000个点时,是否可以在数据块中运行。我想不会,因为最后的数据是相同的,我想你可以做到。但是您不能在不同的数据块上训练两个模型,因为结果会不同。你试过最大深度吗?
line 366, in fit
    builder.build(self.tree_, X, y, sample_weight, X_idx_sorted)
  File "sklearn/tree/_tree.pyx", line 145, in sklearn.tree._tree.DepthFirstTreeBuilder.build
  File "sklearn/tree/_tree.pyx", line 244, in sklearn.tree._tree.DepthFirstTreeBuilder.build
  File "sklearn/tree/_tree.pyx", line 735, in sklearn.tree._tree.Tree._add_node
  File "sklearn/tree/_tree.pyx", line 707, in sklearn.tree._tree.Tree._resize_c
  File "sklearn/tree/_utils.pyx", line 39, in sklearn.tree._utils.safe_realloc
MemoryError: could not allocate 10206838784 bytes