1

我不想像这样将 Weka 分类器的名称硬编码到我的 Java 中:

Classifier cls = new J48();  

其中 Classifier 是 Weka 类。

相反,我更愿意将值“J48”存储在数据库表的 varchar 列中。

关于如何将包含“J48”的 Java 字符串转换为 Weka 类型的任何想法?我没有成功尝试类似的事情:

cls = Class.forName("weka.classifiers.trees.J48;");

J48 是决策树的 Weka 类的名称。

4

3 回答 3

2

快速解决方案:

Object obj = Class.forName("weka.classifiers.trees.J48").newInstance();
Classifier cls = Class.forName("weka.classifiers.trees.J48").cast(obj);

J48 应该有 0 参数构造函数。

于 2013-02-08T15:02:33.707 回答
1

有更好的单行版本

Classifier classifier = AbstractClassifier.forName(className, options);

或以下用于较新版本的 Weka

Classifier classifier = Classifier.forName(className, options);
于 2014-09-14T13:55:59.627 回答
0

这在技术上是相同的答案,但只是一个较短的单行版本

Classifier cls = (Classifier) Class.forName("weka.classifiers.trees.J48").newInstance();
于 2013-02-11T08:29:57.967 回答