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 中训练一个 MultiClassClassifier
model,其基本算法设置为 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()
,所以我清楚地混合了supportVector
和functions
包中的两个SMO 类。我还读到我需要为 SMO 设置 -M
和 -V
属性,以便我的 MultiClassClassifier 正常工作。因此,我使用 -M 属性打开了“将校准模型拟合到 SVM 输出”,并使用 -V 属性将交叉验证的折叠数设置为 -1(默认)。
我假设必须为测试目的设置交叉验证的折叠数属性。从此时起,必须查看有关交叉验证的帖子。
再次感谢您!
【问题讨论】:
【参考方案1】:A) 除非您有特殊需要,否则您可能不应该使用开发人员分支。据我们所知,他们正在四处移动东西并且可能会损坏
B) RegSMOImproved 用于 Regression ,而不是分类。因此,您的一些问题可能是 MultiClassClassifier 和回归算法之间的不匹配。
【讨论】:
supportVector 和函数包之间的匹配失败是我的代码中的问题。我已经用工作选项对象更新了我的帖子。现在我需要检查 weka 交叉验证设置,以便让我的多类分类器正常工作。再次感谢您。以上是关于WEKA - 多类分类 - 找不到名为:weka.classifiers.functions.supportVector.RegSMOImproved 的类的主要内容,如果未能解决你的问题,请参考以下文章