使用新数据更新SVM分类器

时间:2014-02-20 21:31:10

标签: python scikit-learn svm libsvm scikits

我使用

在Python中训练了一个SVM分类器
clf = sklearn.svm.NuSVC(nu=0.05, probability=True, kernel='rbf')
clf.fit(points, classes)

这对预测非常有用。 现在我想更新分类器参数。 几点不会改变分类(从正数到零),还会添加一些分数。少数意味着10000或更多的50。

我认为提示SVM分类器从先前的参数开始是明智的,这应该非常接近最佳解决方案。我有一个问题,有时,分类器随机非常差(我认为拟合失败)。 有没有办法在scikit-learn或libsvm中这样做?

2 个答案:

答案 0 :(得分:5)

NuSVC不提供增量/在线学习。要在scikit-learn中执行此操作,您需要SGDClassifier。这符合线性模型,但您可以使用kernel_approximations模块获得RBF内核的近似值(另请参阅its author's blog)。

如果您想要一个真正的在线内核学习者,请查看LASVM

答案 1 :(得分:0)

似乎sklearn.linear_model.SGDClassifier partial_fit方法可以通过随机梯度下降实现在线学习效果。但内核必须是线性的。据我所知,scikit或libsvm不支持使用rbf内核进行在线学习。