WEKA - 多类分类 - 找不到名为:weka.classifiers.functions.supportVector.RegSMOImproved 的类

Posted

技术标签:

【中文标题】WEKA - 多类分类 - 找不到名为:weka.classifiers.functions.supportVector.RegSMOImproved 的类【英文标题】:WEKA - Multi Class Classification - Can't find class called: weka.classifiers.functions.supportVector.RegSMOImproved 【发布时间】:2016-06-07 00:53:47 【问题描述】:

我正在尝试在 Weka 中训练一个 MultiClassClassifiermodel,其基本算法设置为 weka.classifiers.functions.supportVector.RegSMOImproved 类,具有以下选项:

    MultiClassClassifier cModel = new MultiClassClassifier();
    String options[] = 
            "weka.classifiers.meta.MultiClassClassifier",
            "-M","0",
            "-R","2.0",
            "-S","1",
            "-W","weka.classifiers.functions.supportVector.RegSMOImproved",
            "-P","1.0e-12",
            "-L","1.0e-3",
            "-W","1"
    ;
    try 
        cModel.setOptions(options);
     catch (Exception e) 
        e.printStackTrace();
    

当我运行我的代码时,我收到以下错误:

java.lang.Exception: Can't find class called: weka.classifiers.functions.supportVector.RegSMOImproved
    at weka.core.Utils.forName(Utils.java:1073)
    at weka.classifiers.AbstractClassifier.forName(AbstractClassifier.java:90)
    at weka.classifiers.SingleClassifierEnhancer.setOptions(SingleClassifierEnhancer.java:108)
    at weka.classifiers.RandomizableSingleClassifierEnhancer.setOptions(RandomizableSingleClassifierEnhancer.java:93)
    at weka.classifiers.meta.MultiClassClassifier.setOptions(MultiClassClassifier.java:802)
    at myApp.Main.trainMultiClassClassifier(Main.java:983)
    at myApp.Main.createSets(Main.java:903)
    at myApp.Main.main(Main.java:387)

如果不是,使用 RegSMOImproved 算法的正确类路径是什么 weka.classifiers.functions.supportVector.RegSMOImproved

我是否在这里遗漏了其他东西,可能是其他设置,或者某种父类?

我正在使用来自 here 的 Weka developer-branch。如果我无意中遗漏了任何内容,请告诉我,我会尽快进行编辑。

提前谢谢你。

编辑 1:

我正在尝试完成多类分类,我会将我的模型/模型训练为一个类而不是其他类。我的数据是平衡的(每类 100 个样本)。这是我目前发现的:

http://weka.8497.n7.nabble.com/meta-multi-class-classifier-with-the-option-smo-td26548.html

编辑 2:

所以我将选项对象更改为:

    String options[] = 
            "-M","0",
            "-R","2.0",
            "-S","1",
            "-W","weka.classifiers.functions.SMO",
            "--",
            "-C","1",
            "-L","0.001",
            "-P","1.0e-12",
            "-M",
            "-N", "0",
            "-V","-1",
            "-W","1",
            "-K", "weka.classifiers.functions.supportVector.PolyKernel -C 250007 -E 1.0"
    ;

这似乎通过setOptions(),所以我清楚地混合了supportVectorfunctions 包中的两个SMO 类。我还读到我需要为 SMO 设置 -M-V 属性,以便我的 MultiClassClassifier 正常工作。因此,我使用 -M 属性打开了“将校准模型拟合到 SVM 输出”,并使用 -V 属性将交叉验证的折叠数设置为 -1(默认)。

我假设必须为测试目的设置交叉验证的折叠数属性。从此时起,必须查看有关交叉验证的帖子。

再次感谢您!

【问题讨论】:

【参考方案1】:

A) 除非您有特殊需要,否则您可能不应该使用开发人员分支。据我们所知,他们正在四处移动东西并且可能会损坏

B) RegSMOImproved 用于 Regression ,而不是分类。因此,您的一些问题可能是 MultiClassClassifier 和回归算法之间的不匹配。

【讨论】:

supportVector 和函数包之间的匹配失败是我的代码中的问题。我已经用工作选项对象更新了我的帖子。现在我需要检查 weka 交叉验证设置,以便让我的多类分类器正常工作。再次感谢您。

以上是关于WEKA - 多类分类 - 找不到名为:weka.classifiers.functions.supportVector.RegSMOImproved 的类的主要内容,如果未能解决你的问题,请参考以下文章

从命令行运行 weka - 找不到类 NaiveBayes

Weka - 如何查找分类器的输入格式

WEKA 分类器返回一个分类而不考虑值

WEKA - 用 Ja​​va 训练多类 SVM 模型

weka - 如何打印错误分类的实例

在 Weka 中使用 HMM