2017-12-23 58 views
0

私は機械学習の新機能ですので、理解が間違っていることがあります。私は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でトレーニングを実行し、残りのフォールドをテストする。

このロードされたモデルを使用してテストを実行する方法はありますか?

ありがとうございます。

答えて

0

電車のデータにevalを作成してください。 Evaluation eval = new Evaluation(train);

あなたは電車のデータを持っていない場合 は使用: Evaluation eval = new Evaluation(test); eval.useNoPriors(); eval使用eval.evaluateModel(classifier, test);を作成した後は、テストデータを分類します。

関連する問題