作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有两个不同大小的数据集。
1) 数据集 1 具有高维度 4500 个样本(草图)。
2) 数据集 2 是低维度的 1000 个样本(真实数据)。我假设“两个数据集具有相同的分布”
我想在第一个数据集上使用 sklearn
训练非线性 SVM
模型(作为预训练),然后我想更新模型在第二个数据集的一部分上(以适应模型)。我怎样才能在 sklearn 上开发一种更新。如何更新 SVM 模型?
最佳答案
In sklearn you can do this only for linear kernel and using SGDClassifier
(with appropiate selection of loss/penalty terms, loss should be hinge, and penalty L2). partial_fit
方法支持增量学习,SVC
和 LinearSVC
均未实现。
不幸的是,在实践中,对于这种小数据集,以增量方式拟合 SVM 是毫无用处的。 SVM 具有易于获得的全局解决方案,因此您不需要任何形式的预训练,事实上它应该根本不重要,如果您是考虑神经网络意义上的预训练。如果正确实现,SVM 应该完全忘记以前的数据集。为什么不一次学习整个数据呢?这就是 SVM 应该做的。除非您正在使用 SVM 的一些非凸修改(然后预训练才有意义)。
总结:
关于python - 如何用新数据更新 SVM 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35492556/
我是一名优秀的程序员,十分优秀!