在scikit-learn中使用python生成器



我想知道是否以及如何使用python生成器作为scikit-learn分类器的.fit()函数的数据输入?由于数据量巨大,这对我来说似乎是有意义的。

特别是,我将实施随机森林方法。

问候K

答案是否定的。要使用随机森林进行核心学习,您应该

  1. 将数据拆分为合理大小的批次(受您拥有的 RAM 数量的限制;越大越好);
  2. 训练单独的随机森林;
  3. 将所有基础树一起追加到其中一个树的estimators_成员中(未经测试):

    for i in xrange(1, len(forests)):
        forests[0].estimators_.extend(forests[i].estimators_)`
    

(是的,这很笨拙,但尚未找到此问题的解决方案。请注意,对于非常大的数据集,只需对适合大型机器 RAM 的一些训练示例进行采样,而不是对所有样本进行训练,可能会有所作为。另一种选择是切换到带有SGD的线性模型,这些模型实现了partial_fit方法,但显然它们可以学习的函数类型受到限制。

简短的回答是"不,你不能"。经典随机森林分类器不是增量或在线分类器,因此您不能在学习时丢弃训练数据,而必须一次提供所有数据集。

由于RF在机器学习中的普及(尤其是因为一些有趣案例的良好预测结果),有一些尝试来实现随机森林的在线变体,但据我所知,这些尚未在任何python ML包中实现。

参见Amir Saffari的页面了解这种方法(不是Python)。

相关内容

  • 没有找到相关文章

最新更新