Test single instance in weka which has no class la

2020-06-22 03:19发布

问题:

This question is being already asked but i didn't understand the answer so I am again posting the question please do reply.

I have a weka model eg: j48 I have trained that model for my dataset and now I have to test the model with a single instance in which it should return the class label. How to do it?

I have tried these ways:

1)When I am giving my test instance a,b,c,class for class as ?. It is showing problem evaluating classifier .train and test are not compatible

2)When I list all the class labels and I put the ? for the class label for the test instance like this:

@attribute class {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27}

@data
1,2,............,?

It is not showing any results like this

=== Evaluation on test set ===
=== Summary ===

Total Number of Instances                0     
Ignored Class Unknown Instances                  1     

=== Detailed Accuracy By Class ===

               TP Rate   FP Rate   Precision   Recall  F-Measure  ROC Area  Class
                 0         0          0         0         0         ?        1
                 0         0          0         0         0         ?        2
                 0         0          0         0         0         ?        3
Weighted Avg.  NaN       NaN        NaN       NaN       NaN       NaN    

confusion matrix is null

What to do?

回答1:

Given the incomplete information from the OP, here is what probably happened:

You used

  1. the Weka GUI Chooser
  2. selected the Weka Explorer
  3. loaded your training data on the Preprocess tab
  4. selected the Classify tab
  5. selected the J48 classifier
  6. selected Supplied test set under test options and supplied your aforementioned test set
  7. clicked on Start

Now to you problem:

"Evaluation on test set" should have given it away, because you're are evaluating the classifier -or better: the trained model. But for evaluation, you need to compare the predicted class with the actual class, which you didn't supply. Hence, the instance with the missing class label will be ignored.

Since you don't have any other test instances WITH class label, the confusion matrix is empty. There simply is not enough information available to build one. (And just as a side note: A confusion matrix for only one instance is kinda worthless.)

To see the actual prediction

You have to go to More options ..., click on Choose next to Output predictions and select an output format, e.g. PlainText, and you will see something like:

inst#     actual  predicted error prediction
    1        1:?        1:0       0.757 
    2        1:?        1:0       0.824 
    3        1:?        1:0       0.807 
    4        1:?        1:0       0.807 
    5        1:?        1:0       0.79 
    6        1:?        2:1       0.661 

This output lists the classified instances in the order they occur in the test file. This example was taken from the Weka site about "Making predictions" with the following explanation.

In this case, taken directly from a test dataset where all class attributes were marked by "?", the "actual" column, which can be ignored, simply states that each class belongs to an unknown class. The "predicted" column shows that instances 1 through 5 are predicted to be of class 1, whose value is 0, and instance 6 is predicted to be of class 2, whose value is 1. The error field is empty; if predictions were being performed on a labeled test set, each instance where the prediction failed to match the label would contain a "+". The probability that instance 1 actually belongs to class 0 is estimated at 0.757.