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

时间:2016-02-24 16:08:08

标签: java machine-learning svm weka

我正在尝试在Weka中训练MultiClassClassifier模型,并将基本算法设置为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开发者分支。如果有任何我无意中遗漏的请告诉我,我会尽快编辑。

提前谢谢你。

编辑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 个答案:

答案 0 :(得分:0)

A)除非您有特殊需要,否则您可能不应该使用开发人员分支。对于我们所知道的一切,他们正在移动的东西和它可能被打破

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