2016-03-17 83 views
0

我有一個代碼來爲Weka準備一個ARFF文件。它將用於在j48算法中使用已經建立的模型對數據進行分類。使用Java代碼向ARFF添加問號

在ARFF文件中,我需要將問號放在最後一列,以便Weka嘗試對數據進行分類。我有這樣的代碼:

 ArrayList<Attribute> atts = new ArrayList<Attribute>(); 
     ArrayList<String> classVal = new ArrayList<String>(); 
     classVal.add("C1"); 
     classVal.add("C2"); 
     atts.add(new Attribute("a")); 
     atts.add(new Attribute("b")); 
     atts.add(new Attribute("c")); 
     atts.add(new Attribute("d")); 
     atts.add(new Attribute("@@[email protected]@", classVal)); 
     Instances dataRaw = new Instances("TestInstances", atts, 0); 
     dataRaw.setClassIndex(dataRaw.numAttributes() - 1); 
     double[] instanceValue1 = new double[] { p.getIncludedLength(), p.getTimestampSeconds()}; 
     dataRaw.add(new DenseInstance(1.0, instanceValue1)); 
     ArffSaver saver = new ArffSaver(); 
     saver.setInstances(dataRaw); 
     saver.setFile(new File(path3)); 
     saver.setDestination(new File(path3)); 
     saver.writeBatch(); 

因此,作爲最後一個元素,應該有一個?,它不是一個double值。我如何添加它?

double[] instanceValue1 = new double[] { p.getIncludedLength(), p.getTimestampSeconds(), ?}; 

回答

0
DenseInstance di = new DenseInstance(3); // Sets all 3 values to missing 
di.setValue(0, p.getIncludedLength()); 
di.setValue(1, p.getTimestampSeconds()); 

或者,如果你真的有一噸值的數組,你可以使用零值作爲一個佔位符,並嘗試setMissing()

double[] instanceValue1 = new double[] { p.getIncludedLength(), p.getTimestampSeconds(), 0.0} 
DenseInstance di = new DenseInstance(1.0, instanceValue1); 
di.setMissing(2); 
+0

謝謝你,我會盡力它。 – Androidification