私は機械学習の新機能ですので、理解が間違っていることがあります。私はwekaを使用してJavaコードを介して保存されたモデルをロードすることによってデータをテストしようとしています。保存されたモデルを使用してJavaコード(Weka)でデータをテストする
Instances testingData = readArffFile(testFile);
try
{
LibSVM cls = (LibSVM) weka.core.SerializationHelper.read(model);
Evaluation eval = new Evaluation(testingData);
eval.crossValidateModel(cls, testingData, 10, new Random(1));
//eval.evaluateModel(cls, testingData);
}
モデルを保存したとき、私はクロスバリデーションを使用しました。 eval.crossValidateModel()
またはeval.evaluateModel()
のどちらを使用するかは、ちょっと混乱しています。
私がevaluateModel()
を使用していると、間違った精度が与えられます(それよりはるかに高い)。私はこれは、<Evaluation eval = new Evaluation(testingData);>
という行が同じデータでそれを訓練し、その後同じデータでテストしているからだと思います。これは私が望むものではありません。
私がeval.crossValidateModel()
を使用すると、私はcrossvalidationがデータセットを分割していることがわかっているので、モデルを再びトレーニングしていると思います。(モデルはトレーニング後に保存されています) k-foldを実行し、次にk-1でトレーニングを実行し、残りのフォールドをテストする。
このロードされたモデルを使用してテストを実行する方法はありますか?
ありがとうございます。