有人能告诉我如何在Encog 3.1中使用多类SVM分类吗?
我已经成功地使用了他们的神经网络,但无法解决如何设置多类SVM。
文档上有这样的说法:
“这是一个由一个或多个支持向量机( SVM )支持的网络。它的功能与Encog神经网络非常相似,并且在很大程度上可以与Encog神经网络互换。当您希望SVM将输入数据分组为一个或多个类别时,可以使用分类。支持向量机通常只有一个输出。神经网络可以有多个输出神经元。要解决此问题,如果指定了多个输出,则此类将创建多个SVM。”
然而,我看不到如何指定多个输出,事实上,输出属性只返回1:
/// <value>For a SVM, the output count is always one.</value>
public int OutputCount
{
get { return 1; }
}欢迎使用Java或c#回答
EDIT仍然无法解决这个问题。我真的很喜欢使用Encog,但支持论坛上只有Jeff Heaton (项目的作者)自己有机会回答,所以我链接了项目代码并添加了赏金,希望有人能看到我明显缺少的东西。
项目:http://heatonresearch.com/
谷歌代码中的SupportVectorMachine类:https://code.google.com/p/encog-cs/source/browse/trunk/encog-core/encog-core-cs/ML/SVM/SupportVectorMachine.cs
发布于 2013-05-30 04:09:45
你不能有多类SVM。支持向量机只能分为两类。当然,有一些方法可以将它们用于多类分类。他们是一对一和一对一。
在一对一中,您为每对类训练(k *(k-1))个/2支持向量机。然后你让他们投票,得票率最高的班级获胜。
在one-vs-all中,您只有k个SVM,并且对于每个类,您可以针对其他类训练一个SVM,然后再次让它们投票并选择获胜者。
我不知道在Encog中是否支持一对一和一对一,在最坏的情况下你可以自己写。然而,我确信你看错了代码库的一部分。它很可能不会出现在SVM的实现中。
https://stackoverflow.com/questions/16743771
复制相似问题