我有一个特定类别(例如癌症)的训练数据集(文本)。我想在 weka 中为这个类训练一个 SVM 分类器。但是,当我尝试通过创建文件夹“cancer”并将所有这些训练文件放入该文件夹来做到这一点时,当我运行代码时,我收到以下错误: weka.classifiers.functions.SMO:无法处理一元类!
我想要做的是,如果分类器找到与“癌症”相关的文档,它会正确说出类名,一旦我输入非癌症文档,它应该会说“未知”之类的内容。
我应该怎么做才能得到这种行为?
最佳答案
Weka中的SMO算法仅在两个类之间进行二元分类。顺序最小优化是一种用于求解 SVM 的特定算法,在 Weka 中这是该算法的基本实现。如果你有一些例子是癌症,而另一些例子不是,那么这将是二元的,也许你没有正确地标记它们。
但是,如果您使用的训练数据都是癌症示例,并且您希望它告诉您 future 的示例是否符合该模式,那么您正在尝试进行一类 SVM,又称异常值检测。
LibSVM in Weka可以处理一类支持向量机。与 Weka SMO 实现不同,LibSVM是一个独立的程序,已与 Weka 连接并包含许多不同的 SVM 变体。 This post Wekalist 上解释了如何在 Weka 中使用 LibSVM 来实现此目的。
关于text - weka 中的一元类文本分类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10394615/