我有两个不同大小的数据集。
1)数据集1具有高维度4500个样本(草图)。
2)数据集2具有低维1000个样本(实际数据)。 我想“两个数据集具有相同的分布”
我想在第一个数据集上使用SVM
训练一个非线性sklearn
模型(作为预训练),之后我想在第二个数据集的一部分上更新模型数据集(适合模型)。
如何在sklearn上开发一种更新。如何更新SVM模型?
答案 0 :(得分:9)
在sklearn中,你只能对线性内核使用SGDClassifier
(适当选择损失/惩罚条款,损失应该是铰链,惩罚L2)。通过partial_fit
方法支持增量学习,SVC
和LinearSVC
均未实现此功能。
不幸的是,在实践中,对于这样的小数据集以增量方式拟合SVM是相当无用的。 SVM易于获得全局解决方案,因此您不需要预先培训任何形式,实际上它应该根本不重要,如果你是考虑在神经网络意义上预训练。如果正确实现,SVM应该完全忘记以前的数据集。为什么不一次学习整个数据呢?这就是SVM应该做的事情。除非你正在使用SVM的一些非凸修改(然后预训练才有意义)。
总结一下: