2014-03-26 82 views
2

sklearn.LinearRegression是否支持在线/增量学习?我有100组数据,我试图完全实现它们。对于每个组,有超过10000个实例和〜10个特征,所以如果我构造一个巨大的矩阵(10×10×10),会导致内存错误。如果我可以每次使用新组的批次样本更新回归器,那将会很好。大数据的sklearn线性回归

我发现this post相关,但接受的解决方案适用于使用单个新数据(仅一个实例)进行在线学习,而不是批量样本。

回答

8

看看linear_model.SGDRegressor,它使用随机梯度学习线性模型。

在一般情况下,sklearn有许多模型,承认“partial_fit”,它们都非常适用于不适合RAM的大中型数据集。

+0

谢谢caoy。这很有帮助。但sgdregressor的输入与普通线性回归器完全相同(我仍然需要准备好大型数据集)? – ChuNan

+3

@ChuNan,不需要组建大型数据集。看一下示例代码:特别是,http://china.chinaunix.net/cgi-bin/docs.html#ChuNan,http://scikit-learn.org/dev/auto_examples/applications/plot_out_of_core_classification.html#example-applications-plot-out-of-core-classification-py –

+1

@ChuNan,看看如何在生成器函数“iter_minibatches”中快速构建数据块。如果你不熟悉Python生成器的概念,请看看:https://wiki.python.org/moin/Generators –

7

并非所有的算法都可以逐步学习,而不会立即看到所有的实例。也就是说,实现API的所有估计者都是小批量学习的候选人,也称为“在线学习”。

Here是一篇超越增量学习的缩放策略的文章。为了您的目的,请看sklearn.linear_model.SGDRegressor课程。这是真正的在线,所以内存和收敛速度不受批量大小的影响。

+0

不客气。不,你不需要构造整个矩阵。它是通过'yield'生成器在课堂上完成的。 – Drewness

+0

SGDRegressor和LinearRegression之间的主要区别是在线学习功能吗? – mszep