/** * Populates test and training datasets. * * <p>Note: (1) assumes a 50:50 split, (2) training data set is stored in the dataArray structure * in which the input data is stored, (3) method called from application class as same training * and test sets may be required if using (say) "hill climbing" approach to maximise accuracy, (4) * method is not called from constructor partly for same reason as 3 but also because the input * data set may (given a particular application) first require ordering and possibly also pruning * and recasting (see recastClassifiers method). * * @param test myDataset Class where examples are stored to build the classifier * @param dataBase DataBase Class to store the examples to work with the algorithm and some other * useful information */ public void testDataSet(myDataset test, DataBase dataBase) { int i, j, k; int[] example; short value; // Determine size of training and test sets. setNumRowsInTrainingSet(); numRowsInTestSet = test.getnData(); // Dimension and populate test set testDataArray = new short[numRowsInTestSet][]; for (i = 0; i < numRowsInTestSet; i++) { example = test.getExample(i); testDataArray[i] = new short[dataBase.numVariablesUsed() + 1]; value = 1; for (j = 0, k = 0; j < example.length; j++) { if (dataBase.numLabels(j) > 1) { testDataArray[i][k] = (short) example[j]; testDataArray[i][k] += value; value += dataBase.numLabels(j); // System.out.print (testDataArray[i][k] + " "); k++; } } testDataArray[i][k] = (short) test.getOutputAsInteger(i); testDataArray[i][k] += value; // System.out.print (testDataArray[i][k] + " "); // System.out.println (""); } }