問題は、トレーニング セット -t train.arff
とテスト セットを指定すると、テスト セットtest.arff
に基づいてモデルのパフォーマンスを計算する操作モードになることです。しかし、実際のクラスを知らなければ、いかなる種類のパフォーマンスも計算できません。実際のクラスがなければ、予測が正しいか間違っているかをどのように知ることができますか?
あなたが与えたデータを、私が割り当てた任意のクラスラベルtrain.arff
と同様に使用しました。test.arff
関連する出力行は次のとおりです。
=== Error on training data ===
Correctly Classified Instances 4 80 %
Incorrectly Classified Instances 1 20 %
Kappa statistic 0.6154
Mean absolute error 0.2429
Root mean squared error 0.4016
Relative absolute error 50.0043 %
Root relative squared error 81.8358 %
Total Number of Instances 5
=== Confusion Matrix ===
a b <-- classified as
2 1 | a = 1
0 2 | b = -1
と
=== Error on test data ===
Total Number of Instances 0
Ignored Class Unknown Instances 5
=== Confusion Matrix ===
a b <-- classified as
0 0 | a = 1
0 0 | b = -1
Weka は、実際のクラス ラベルと予測されたラベル (トレーニング セットにモデルを適用する) を知っているため、トレーニング セットの統計を提供できます。テスト セットについては、真のクラス ラベルがわからないため、パフォーマンスに関する情報を取得できません。
あなたがしたいことは次のとおりです。
java -cp weka.jar weka.classifiers.bayes.NaiveBayes -t train.arff -T test.arff -p 1-4
私の場合、これはあなたに与えるでしょう:
=== Predictions on test data ===
inst# actual predicted error prediction (feature1,feature2,feature3,feature4)
1 1:? 1:1 1 (1,7,1,0)
2 1:? 1:1 1 (1,5,1,0)
3 1:? 2:-1 0.786 (-1,1,1,0)
4 1:? 2:-1 0.861 (1,1,1,1)
5 1:? 2:-1 0.861 (-1,1,1,1)
したがって、予測を取得することはできますが、ラベル付けされていないテスト データがあるため、パフォーマンスを取得することはできません。