0

我已成功地遵循this示例爲我自己的文本分類腳本。在Python中的partial_fit的多個實例之間保存進度SGDClassifier

問題是我不想處理一個巨大的,但現有的數據集在partial_fit調用循環中的塊,就像他們在示例中所做的那樣。我希望能夠在數據可用時添加數據,即使我在此期間關閉了我的python腳本。

理想我想這樣做:

某個時候在2015年:

model2015 = partial_fit(dataset2015)

save_to_file(model2015)

關閉我的Python腳本

2016年某時:

打開我的Python腳本再次

load_from_file(model2015)

partial_fit(dataset2016結合model2015)

save_to_file(model2016)

某個時候在2017年:

打開我的Python腳本再次

etc ...

有什麼辦法可以在scikit-learn中做到這一點?或者在其他一些軟件包中(也許是Tensorflow)?

回答

0

簡單地醃你的模型,並將其保存到磁盤。另一種方式是轉儲.coef_和.intercept_字段(這只是兩個數組),並在調用時將它們用作初始值設定項。.fit

+0

當你想再次合適時,Pickle和joblib肯定不起作用你只是想預測):他們會被一個新的呼叫覆蓋,以適應fit或partial_fit。但是我會用前面的迭代中的.coef和.intercept來看看.fit(我猜partial_fit不是必須的),聽起來好像可能會起作用。謝謝! – Bubba

+0

好的,當我再次調用fit時,使用.coef和.intercept參數確實提高了準確性,所以這似乎正在做我希望它做的事情。它確實創造了一個新問題:不同的數據集可以有不同數量的類別(類),partial_fit我可以簡單地告訴它使用所有可能的類別(我有一個包含它們列表的文件),但是如果適合,我可以如果.coef數組的大小與當前數據集中的類別數不同,則會發生錯誤。 所以我需要一種方法來設置類似partial_fit的類,或者設置partial_fit中的coef和截距。 – Bubba

+0

「黑客」解決方案是用剩餘的標籤(例如在所有特徵上使用「0」)創建summy點,強制它接受標籤。此外,因爲係數和截距都取決於類數 - 您可以從與整個標註集相對應的大小的矢量開始(因此,您首先使用隨機權重調用,如初始值,但是具有預定義的大小) – lejlot

相關問題