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

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

是否有可能对我提供小批量的 scikit-learn 分类器进行小批量训练?

最佳答案

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

如果您对逻辑回归特别感兴趣,那么您将需要使用 SGDClassifier ,它可以设置为在 loss = 'log' 时使用逻辑回归。

您只需按照使用 partial_fit 的相同方式将 minibatch 的特征和标签传递给 fit :
clf.partial_fit(X_minibatch, y_minibatch)
更新 :

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

10-07 20:24