scikit-learn分类器的迷你批量训练,我在其中提供迷你批次



我有一个非常大的数据集,无法加载到内存中。

我想将此数据集用作scikit-learn分类器的训练集 - 例如LogisticRegression

是否可以在我提供迷你批次的地方对scikit-learn分类器进行迷你批量训练?

我相信sklearn中的一些分类器具有partial_fit方法。此方法允许您将小批量数据传递到分类器,以便为每个小批量执行梯度下降步骤。您只需从磁盘加载一个小批量,将其传递给partial_fit,从内存中释放小批量,然后重复。

如果您对逻辑回归执行此操作特别感兴趣,则需要使用 SGDClassifier ,它可以设置为在loss = 'log'时使用逻辑回归。

您只需将小批量的功能和标签传递给partial_fit,就像使用fit一样:

clf.partial_fit(X_minibatch, y_minibatch)

更新

我最近遇到了dask-ml库,通过将dask数组与partial_fit相结合,可以使这项任务变得非常容易。链接的网页上有一个例子。

查看sklearn文档中包含的扩展策略:http://scikit-learn.org/stable/modules/scaling_strategies.html

这里提供了一个很好的例子:http://scikit-learn.org/stable/auto_examples/applications/plot_out_of_core_classification.html

最新更新