我有一个特定类别(比如癌症)的训练数据集(文本)。我想在weka中为这个类训练一个SVM分类器。但是,当我尝试创建一个名为“癌症”的文件夹并将所有这些训练文件放到该文件夹中时,当我运行代码时,我得到了以下错误: weka.classifiers.functions.SMO: Cannot handle unary class!
我想要做的是,如果分类器找到一个与“癌症”相关的文档,它会正确地说出类名,一旦我输入一个非癌症文档,它应该会说“未知”之类的东西。
我应该怎么做才能得到这个行为呢?
发布于 2012-05-01 20:21:39
Weka中的SMO算法仅在两个类之间进行二进制分类。序列最小优化是求解支持向量机的一种特殊算法,在Weka中这是该算法的基本实现。如果你有一些是癌症的例子,另一些不是,那么这将是二进制的,也许你没有正确地标记它们。
然而,如果你使用的训练数据都是癌症的例子,并且你想让它告诉你未来的例子是否符合模式,那么你就试图做单类SVM,也就是异常值检测。
LibSVM in Weka可以处理单类svm。与Weka SMO实现不同,LibSVM是一个独立的程序,它已经连接到Weka中,并结合了许多不同的支持向量机变体。Weka上的This post解释了如何在Weka中使用LibSVM来实现这一点。
https://stackoverflow.com/questions/10394615
复制相似问题