大数据的sklearn线性回归
请问 sklearn.LinearRegression
支持在线学习或增量学习吗?
我有100组数据,想把它们一起处理。每组数据有超过10000个实例和大约10个特征,如果我把这些数据放在一个很大的矩阵里(10^6行和10列),就会导致内存错误。如果我能每次用新组的批量样本来更新回归模型,那就太好了。
我找到了一篇相关的帖子,这个帖子,但里面的解决方案只适用于在线学习单个新数据(也就是只有一个实例),而不是批量样本。
2 个回答
9
并不是所有的算法都能逐步学习,也就是说,它们不能一次性看到所有的数据。不过,所有实现了 partial_fit
接口的估计器都可以进行小批量学习,这种学习方式也叫“在线学习”。
这里有一篇文章,讲述了逐步学习的扩展策略。为了你的需求,可以看看 sklearn.linear_model.SGDRegressor
这个类。它是真正的在线学习,所以内存和收敛速度不受批量大小的影响。
11
看看linear_model.SGDRegressor
,它通过随机梯度的方法来学习一个线性模型。
一般来说,sklearn有很多模型支持"partial_fit
",这些模型在中等到大型的数据集上非常有用,尤其是当数据集太大,无法全部放进内存的时候。