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

我正在尝试在 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: 找不到名为 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)

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

我是否遗漏了其他东西,比如额外的设置,或者某种父类?

我使用的是从 这里 下载的 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 类。我还读到,为了让 MultiClassClassifier 正确工作,我需要为 SMO 设置 -M-V 属性。所以我通过 -M 属性开启了“对 SVM 输出进行拟合校准模型”,并通过 -V 属性将交叉验证的折数设置为 -1(默认值)。

我认为交叉验证的折数属性必须为测试目的而设置。从这一点开始,我需要查看关于交叉验证的帖子。

再次感谢您!


回答:

A) 除非您有特定的需求,否则您可能不应该使用开发者分支。据我们所知,他们可能正在移动一些东西,并且可能存在一些问题。

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

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注