Nu 是不可行的



我在sklearn中使用NuSVC类。尝试实例化 NuSVC 对象后,如下所示:

self.classifier = OneVsRestClassifier(NuSVC())

发现我反复收到"指定的nu不可行"错误。我尝试将"nu"参数从 0.1 一直更改为 1。(以 0.1 为增量),但我不断收到相同的错误。我真的不确定如何解释这个消息,以及如何解决它?我认为如果我将 nu 设置为 1.,它会起作用,因为 nu 表示我认为应该始终站得住脚的训练误差比例的上限。可能是什么原因造成的?

感谢您的帮助!

为了完整起见,从文档中: Nu-SVM 是 SVM 的约束公式(相当于原始的重新参数化),它对允许的错误分类施加了硬限制。如果不能满足这个界限,那么相关的凸优化问题就变得不可行了。

从这个角度来看,你必须调查的第一件事是你真正可以预期多少训练误差,并可能修改你的假设。在C值网格中搜索标准 SVM 以检查这一点。

但是,NuSVC 应该使用一些严格小于 1 的值。根据您的描述,您已经尝试了 0.9 - 开始添加 9,即 .99、.999。如果它在某个时候不起作用,那么一定在某个地方有另一个问题。

论文中的

命题3 关于ν-支持向量机的教程指出,nu的可行值有一个上限,由2*min(m+,m-)/m给出,其中m是样本的总数,m+m-是相应类中的样本数。

因此,如果nu不可行,请尝试较小的nu

相关内容

  • 没有找到相关文章