Javaプログラム内からWEKA分類子を実装しようとしています。これまでのところ、すべてがうまく機能していますが、Weka GUIのトレーニングセットから分類器を構築する場合、分類の精度を向上させるためにStringToWordVectorIDF変換を使用しました。
新しいインスタンスのJava内から、インスタンスを分類子に渡す前に、新しいインスタンスの各トークン値に設定するIDF変換を計算するにはどうすればよいですか?
基本的なコードは次のようになります。
Instances ins = vectorize(msg);
Instances unlabeled = new Instances(train,1);
Instance inst = new Instance(unlabeled.numAttributes());
String tmp = "";
for(int i=0; i < ins.numAttributes(); i++) {
tmp = ins.attribute(i).name();
if(unlabeled.attribute(tmp)!=null)
inst.setValue(unlabeled.attribute(tmp), 1.0); //TODO: Need to figure out the IDF transformed value to put here NOT 1!!
}
unlabeled.add(inst);
unlabeled.setClassIndex(classIdx);
.....cl.distributionForInstance(unlabeled.instance(i));
では、分類したい新しいインスタンスに正しい値を入れるように、これをコーディングするにはどうすればよいですか?
明確にするために、行をIDF変換番号にinst.setValue(unlabeled.attribute(tmp), 1.0);
変更する必要があります...1.0