2013-04-21 165 views
4

我正在使用scikit庫來使用svm。我有大量的數據,我無法一起閱讀fit() function
我想循環遍歷一個文件中的所有數據並逐個訓練svm。有沒有辦法做到這一點。目前尚不清楚形成文件和他們的教程,他們一次性向fit提供完整的數據。
有沒有什麼辦法可以一個接一個地訓練它(手段可能類似於爲訓練數據的每個輸入模式調用fit)。一對一地訓練scikit svm(在線或隨機訓練)

回答

14

支持向量機(至少在libsvm中實現scikit-learn是一個包裝器)基本上是一個批處理算法:它需要一次訪問內存中的所有數據。因此它們不可擴展。

相反,您應該使用支持partial_fit方法的增量學習的模型。例如一些線性模型,如sklearn.linear_model.SGDClassifier支持partial_fit方法。您可以切片數據集並將其作爲一系列形狀爲(batch_size, n_features)的小型配件加載。 batch_size可以是1,但由於python解釋器開銷(+數據加載開銷)而不是有效的。因此,建議通過至少100個minitaches引導樣本。

+1

我不會說SVM是一種批處理方法,因爲SGDClassifier是一個在線實現;)當然,您的語句僅限於LibSVM。 (如LaSVM所示,對於雙QP的求解者通常不是這樣)。 – 2013-04-21 13:37:12