私は、Weka API 用にある種の Hello World の例を使用しています。データベースからインスタンスを作成しているときに問題を発見しました。 状況: 2 つのテーブル trainset(id, value, classValue) と testset(id, value, classValue) を持つデータベースがあります。
各テーブルには、100% 正しく分類されるサンプル データの 10 行が含まれています。trainset の最初の行は (1, 5, "low") で、testset の最初の行は (1, 15, "high") です。
Weka がInstancesオブジェクトを作成すると、クラスの Attribute オブジェクトも自動的に作成されるようです。
train = query.retrieveInstances();
train.setClassIndex(train.numAttributes() - 1);
最初のセットのクラス属性は
@attribute classValue {low,high}
...そして2番目に
@attribute classValue {high,low}
評価を実行すると表示される
Incorrectly Classified Instances 10 100 %
これは、classValue 属性が混同されていることが原因です。
クラス属性がどのように見えるかを前もって伝える方法はありますか、または何らかの方法でマッピングを変更できますか? 私はすでに試しました
FastVector fvClassVal = new FastVector(2);
fvClassVal.addElement("low");
fvClassVal.addElement("high");
Attribute classAttribute = new Attribute("classValue", fvClassVal);
test.setClass(classAttribute);
しかし、それはうまくいかないようです.classIndexを知りたがっていて、以前の属性を上書きします.