title: Adding an instance and classify it in Weka 3.6.5+
body: <p>I have a <strong>Train.arff</strong> file to which I want to add new instance (say "2,F,22222,1002-5,?") and then classify the last attributes. All my attributes are nominal.</p>
  
  <pre><code>@attribute age {2,3,4,5,6}
  @attribute gender {F,M}
  @attribute zipcode {22222,33333,11111}
  @attribute race {1002-5,2028-9,2054-5,2076-8,2106-3}
  @attribute service {H0018,H2034,H0004,H0009,H0006}
  
  @data
  2,F,22222,1002-5,H0018
  </code></pre>
  
  <ol>
  <li>Loaded <strong>Train.arff</strong></li>
  <li><p>Adding Instance</p>
  
  <pre><code>        Instance inst = new Instance(10);
          inst.setValue(trainData.attribute(0), age);
          inst.setValue(trainData.attribute(1), administrativeGenderCode);
          inst.setValue(trainData.attribute(2), zipCode);
          inst.setValue(trainData.attribute(3), race);
          inst.setValue(trainData.attribute(4), "H2034");
  
          // inst.setDataset(trainData);
  
          // add
          trainData.add(inst);
  </code></pre></li>
  <li><p>Building Classifier</p>
  
  <pre><code>public String buildAndClassify() {
      //build model
      Logistic model = new Logistic();
      try {
          model.buildClassifier(trainData); &lt;-- fails
  
          Instances labeled = new Instances(trainData);
          double clsLabel = model.classifyInstance(trainData.lastInstance());
          labeled.lastInstance().setClassValue(clsLabel);
  
          System.out.print(labeled.lastInstance().stringValue(7));
  
          return labeled.lastInstance().stringValue(7);
  
      } catch (Exception e) {
          e.printStackTrace();
      }
  
      return "";
  }   
  </code></pre>
  
  <blockquote>
    <p>java.lang.NullPointerException    at
    weka.filters.unsupervised.attribute.ReplaceMissingValues.batchFinished(ReplaceMissingValues.java:189)
      at weka.filters.Filter.useFilter(Filter.java:663)   at
    weka.classifiers.functions.Logistic.buildClassifier(Logistic.java:546)
      at
    com.feisystems.bham.weka.LogisticRegression.buildAndClassify(LogisticRegression.java:70)
      at
    com.feisystems.bham.weka.LogisticRegression.(LogisticRegression.java:20)
      at com.feisystems.bham.weka.AttTest.main(AttTest.java:22)</p>
  </blockquote></li>
  </ol>
  
  <p>I am using Weka 3.7 and don't see any example to correctly add instance to an existing file and classify one attribute of the instance. </p>
  
  <p>As a work around I am currently creating another Test.arff file with all the matching attributes from Train.arff and adding instance to those attributes. I however want to add an instance to the same Train.arff file and classify it.</p>