1

次のように、Weka 分類子の名前を Java にハードコーディングしたくありません。

Classifier cls = new J48();  

Classifier は Weka クラスです。

むしろ、値「J48」をデータベース テーブルの varchar 列に格納することをお勧めします。

ただし、「J48」を含む Java String を 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

より良い1行バージョンがあります

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

または、Weka の新しいバージョンの場合は次のとおりです。

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

技術的には同じ答えですが、短い1行のバージョンです

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