J48ツリーを使用しているときに奇妙な結果が出ます。48個の特徴のベクトルを分類する必要があります。これは非常にうまく機能しますが、「最適化」しようとすると、奇妙な結果に遭遇します。
私はメソッド分類を持っています:
public boolean classify(double feature1, double feature2, double[] featureVec ) {
Instance toBeClassified = new Instance(2+featureVec.length);
toBeClassified.setValue(0, feature1);
toBeClassified.setValue(1, feature2);
for (int i = 2; i < f.length + 2; ++i) {
toBeClassified.setValue(i, featureVec [i - 2]);
}
toBeClassified.setDataset(dataset);
try {
double _class = tree.classifyInstance(toBeClassified);
return _class > 0;
} catch (Exception e1) {
if(Logging.active) {
logger.error(e1.getMessage(), e1.getCause());}
}
return false;
}
}
それは非常にうまく機能します、そして私は私が物事を正しくやっていることを願っています。しかし、すべてのメソッド呼び出しで行われるインスタンスの作成を削除したかったので、インスタンスをBeClassified = new Instance(48);に移動しました。クラス本体に線を引きます-したがって、一度だけ作成されます。それは、他の結果と比べてわずかに異なる結果が得られるという事実にもかかわらず、うまく機能します。たとえば、400の分類から、1つが異なります(言うまでもなく、正しくありません)。しかし、その理由はわかりません...ここにwekaを使用している人がいることを願っています。そうすれば、何が起こっているのか、何が間違っているのかを理解できます。(はい、2 + featureVec.lengthは48です)。
ありがとう、よろしく。