奇怪的是,它似乎是適合和partial_fit完全相同的代碼。爲什麼sklearn LatentDirichletAllocation的擬合和partial_fit返回不同的結果?
您可以通過下面的鏈接查看代碼:
https://github.com/scikit-learn/scikit-learn/blob/c957249/sklearn/decomposition/online_lda.py#L478
奇怪的是,它似乎是適合和partial_fit完全相同的代碼。爲什麼sklearn LatentDirichletAllocation的擬合和partial_fit返回不同的結果?
您可以通過下面的鏈接查看代碼:
https://github.com/scikit-learn/scikit-learn/blob/c957249/sklearn/decomposition/online_lda.py#L478
不完全相同的代碼; partial_fit
使用total_samples
:
「 total_samples:INT,可選的(默認= 1E6) 的文件總數僅在partial_fit方法中使用」。
https://github.com/scikit-learn/scikit-learn/blob/c957249/sklearn/decomposition/online_lda.py#L184
(部分適合)https://github.com/scikit-learn/scikit-learn/blob/c957249/sklearn/decomposition/online_lda.py#L472
(適合)https://github.com/scikit-learn/scikit-learn/blob/c957249/sklearn/decomposition/online_lda.py#L510
萬一它是你的興趣:partial_fit
是一個很好的候選人中使用時,您的數據集真的很大。所以,而不是運行到可能內存問題你執行你的小批量擬合,這被稱爲增量學習。
因此,在你的情況下,你應該考慮到total_samples
默認值是1000000.0
。因此,如果您不更改此數字並且您的實際樣本數量較大,則您將從fit
方法和fit_partial
獲得不同的結果。或者可能是因爲您正在使用fit_partial
中的小批次,而未覆蓋您提供給fit
方法的所有樣品。而且,即使你這樣做的權利,你也可以得到不同的結果,如文檔中表示:
sklearn文檔:http://scikit-learn.org/stable/modules/scaling_strategies.html#incremental-learning