2014-04-01 38 views
0

我有一個Train.arff我想添加新實例(例如「2,F,22222,1002-5 ,?」)的文件,然後分類最後的屬性。我所有的屬性都是標稱的。在Weka中添加一個實例並對其進行分類3.6.5+

@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 
  1. 加載Train.arff
  2. 添加實例

     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); 
    
  3. 大廈分類

    public String buildAndClassify() { 
        //build model 
        Logistic model = new Logistic(); 
        try { 
         model.buildClassifier(trainData); <-- 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 ""; 
    } 
    

    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) 在 com.feisystems.bham.weka.LogisticRegression.buildAndClassify(LogisticRegression.java:70) 在 com.feisystems.bham.weka.LogisticRegression。(LogisticRegression.java:20 ) 在com.feisystems.bham.weka.AttTest.main(AttTest.java:22)

我正在使用Weka 3.7並沒有看到任何示例將實例正確添加到現有文件並對實例的一個屬性進行分類。

作爲解決方法我目前正在創建另一個Test.arff文件,其中包含Train.arff中的所有匹配屬性並向這些屬性添加實例。然而,我想要將一個實例添加到同一個Train.arff文件並對其進行分類。

回答

0

This Works!

 Instance inst = new Instance(4); <-- Adjust number of instances you want to add. 

     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"); <-- Do not add the instance you want to classify.