2014-03-26 113 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