python - 使用新数据更新 SVM 分类器

标签 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 中做到这一点?

最佳答案

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

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

关于python - 使用新数据更新 SVM 分类器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21920032/

相关文章:

python-2.7 - 高斯NB :- ValueError: The sum of the priors should be 1

python - 显示错误分类的实例

scikit-learn - 将 sklearn RFE 与来自另一个包的估算器一起使用

python - 你可以在 setuptools 中为 Python 2 和 3 设置条件依赖吗?

python - 在 self._compute_kernel(X) 中引发 ValueError ("X.shape[0] should be equal to X.shape[1]")

machine-learning - OneVsRestClassifier(svm.SVC()).predict() 给出连续值

matlab - 如何使用 Matlab 的 quadprog 实现 soft-margin SVM 模型?

python - 统计MySQL中每张表每列非空值的个数

python - 按一定顺序移动对象数组中的字母

python - 4线程和12线程CPU之间没有明显的提升