2013-04-21 145 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