This example uses a database of a complete set of possible board configurations at the end of tic-tac-toe games, where "x" is assumed to have played first. The target concept is "win for x" (i.e., true when "x" has one of 8 possible ways to create a "three-in-a-row").
There are nine nominal input attributes for each square on the tic-tac-toe board and are encoded such that 0=player x has taken, 1=player o has taken, 2=blank.
The predicted atribute is a win or loose at tic-tac-toe. For this example the first 626 observations are a win and the next 332 are loss.
The structure of the network consists of 27 input nodes and three layers, with five perceptrons in the first hidden layer, three perceptrons in the second hidden layer, and one perceptron in the output layer.
There are a total of 162 weights in this network. The activations functions are logistic for all layers. Since the target output is binary classification the logistic activation function must be used in the output layer. Training is conducted using the quasi-newton trainer using the binary entropy error function provided by the BinaryClassification
class.
import com.imsl.datamining.neural.*; import java.io.*; import java.util.logging.*; import com.imsl.math.*; import com.imsl.stat.Random; //*************************************************************************** // Three Layer Feed-Forward Network with 4 inputs, all // continuous, and 2 classification categories. // // new classification training_ex4.c // // Three Layer Feed-Forward Network with 4 inputs, all // continuous, and 2 classification categories. // // This database encodes the complete set of possible board configurations // at the end of tic-tac-toe games, where "x" is assumed to have played // first. The target concept is "win for x" (i.e., true when "x" has one // of 8 possible ways to create a "three-in-a-row"). // // Predicted attribute: win or loose at tic-tac-toe // First 626 obs are positive (win) and the next 332 are negative (loss) // // Input Attributes (10 categorical Attributes) // Attribute Information: // (0=player x has taken, 1=player o has taken, 2=blank) // // 1. top-left-square: {x,o,b} // 2. top-middle-square: {x,o,b} // 3. top-right-square: {x,o,b} // 4. middle-left-square: {x,o,b} // 5. middle-middle-square: {x,o,b} // 6. middle-right-square: {x,o,b} // 7. bottom-left-square: {x,o,b} // 8. bottom-middle-square: {x,o,b} // 9. bottom-right-square: {x,o,b} // 10. Class: {positive,negative} //*************************************************************************** public class BinaryClassificationEx2 implements Serializable { private static int nObs = 958; // number of training patterns private static int nInputs = 27; // 9 nominal coded as 0=x, 1=O, 2=blank private static int nCategorical = 27;// seven categorical attributes private static int nContinuous = 0; // two continuous input attribute private static int nOutputs = 1; // one continuous output (nClasses=2) private static int nLayers = 3; // number of perceptron layers private static int nPerceptrons1 = 5;// perceptrons in 1st hidden layer private static int nPerceptrons2 = 3;// perceptrons in 2nd hidden layer private static boolean trace = true; // Turns on/off training log private static Activation hiddenLayerActivation = Activation.LOGISTIC; private static Activation outputLayerActivation = Activation.LOGISTIC; private static int[][] data = { {0, 0, 0, 0, 1, 1, 0, 1, 1}, {0, 0, 0, 0, 1, 1, 1, 0, 1}, {0, 0, 0, 0, 1, 1, 1, 1, 0}, {0, 0, 0, 0, 1, 1, 1, 2, 2}, {0, 0, 0, 0, 1, 1, 2, 1, 2}, {0, 0, 0, 0, 1, 1, 2, 2, 1}, {0, 0, 0, 0, 1, 2, 1, 1, 2}, {0, 0, 0, 0, 1, 2, 1, 2, 1}, {0, 0, 0, 0, 1, 2, 2, 1, 1}, {0, 0, 0, 0, 2, 1, 1, 1, 2}, {0, 0, 0, 0, 2, 1, 1, 2, 1}, {0, 0, 0, 0, 2, 1, 2, 1, 1}, {0, 0, 0, 1, 0, 1, 0, 1, 1}, {0, 0, 0, 1, 0, 1, 1, 0, 1}, {0, 0, 0, 1, 0, 1, 1, 1, 0}, {0, 0, 0, 1, 0, 1, 1, 2, 2}, {0, 0, 0, 1, 0, 1, 2, 1, 2}, {0, 0, 0, 1, 0, 1, 2, 2, 1}, {0, 0, 0, 1, 0, 2, 1, 1, 2}, {0, 0, 0, 1, 0, 2, 1, 2, 1}, {0, 0, 0, 1, 0, 2, 2, 1, 1}, {0, 0, 0, 1, 1, 0, 0, 1, 1}, {0, 0, 0, 1, 1, 0, 1, 0, 1}, {0, 0, 0, 1, 1, 0, 1, 1, 0}, {0, 0, 0, 1, 1, 0, 1, 2, 2}, {0, 0, 0, 1, 1, 0, 2, 1, 2}, {0, 0, 0, 1, 1, 0, 2, 2, 1}, {0, 0, 0, 1, 1, 2, 0, 1, 2}, {0, 0, 0, 1, 1, 2, 0, 2, 1}, {0, 0, 0, 1, 1, 2, 1, 0, 2}, {0, 0, 0, 1, 1, 2, 1, 2, 0}, {0, 0, 0, 1, 1, 2, 2, 0, 1}, {0, 0, 0, 1, 1, 2, 2, 1, 0}, {0, 0, 0, 1, 1, 2, 2, 2, 2}, {0, 0, 0, 1, 2, 0, 1, 1, 2}, {0, 0, 0, 1, 2, 0, 1, 2, 1}, {0, 0, 0, 1, 2, 0, 2, 1, 1}, {0, 0, 0, 1, 2, 1, 0, 1, 2}, {0, 0, 0, 1, 2, 1, 0, 2, 1}, {0, 0, 0, 1, 2, 1, 1, 0, 2}, {0, 0, 0, 1, 2, 1, 1, 2, 0}, {0, 0, 0, 1, 2, 1, 2, 0, 1}, {0, 0, 0, 1, 2, 1, 2, 1, 0}, {0, 0, 0, 1, 2, 1, 2, 2, 2}, {0, 0, 0, 1, 2, 2, 0, 1, 1}, {0, 0, 0, 1, 2, 2, 1, 0, 1}, {0, 0, 0, 1, 2, 2, 1, 1, 0}, {0, 0, 0, 1, 2, 2, 1, 2, 2}, {0, 0, 0, 1, 2, 2, 2, 1, 2}, {0, 0, 0, 1, 2, 2, 2, 2, 1}, {0, 0, 0, 2, 0, 1, 1, 1, 2}, {0, 0, 0, 2, 0, 1, 1, 2, 1}, {0, 0, 0, 2, 0, 1, 2, 1, 1}, {0, 0, 0, 2, 1, 0, 1, 1, 2}, {0, 0, 0, 2, 1, 0, 1, 2, 1}, {0, 0, 0, 2, 1, 0, 2, 1, 1}, {0, 0, 0, 2, 1, 1, 0, 1, 2}, {0, 0, 0, 2, 1, 1, 0, 2, 1}, {0, 0, 0, 2, 1, 1, 1, 0, 2}, {0, 0, 0, 2, 1, 1, 1, 2, 0}, {0, 0, 0, 2, 1, 1, 2, 0, 1}, {0, 0, 0, 2, 1, 1, 2, 1, 0}, {0, 0, 0, 2, 1, 1, 2, 2, 2}, {0, 0, 0, 2, 1, 2, 0, 1, 1}, {0, 0, 0, 2, 1, 2, 1, 0, 1}, {0, 0, 0, 2, 1, 2, 1, 1, 0}, {0, 0, 0, 2, 1, 2, 1, 2, 2}, {0, 0, 0, 2, 1, 2, 2, 1, 2}, {0, 0, 0, 2, 1, 2, 2, 2, 1}, {0, 0, 0, 2, 2, 1, 0, 1, 1}, {0, 0, 0, 2, 2, 1, 1, 0, 1}, {0, 0, 0, 2, 2, 1, 1, 1, 0}, {0, 0, 0, 2, 2, 1, 1, 2, 2}, {0, 0, 0, 2, 2, 1, 2, 1, 2}, {0, 0, 0, 2, 2, 1, 2, 2, 1}, {0, 0, 0, 2, 2, 2, 1, 1, 2}, {0, 0, 0, 2, 2, 2, 1, 2, 1}, {0, 0, 0, 2, 2, 2, 2, 1, 1}, {0, 0, 1, 0, 0, 1, 1, 1, 0}, {0, 0, 1, 0, 1, 0, 0, 1, 1}, {0, 0, 1, 0, 1, 1, 0, 1, 0}, {0, 0, 1, 0, 1, 1, 0, 2, 2}, {0, 0, 1, 0, 1, 2, 0, 1, 2}, {0, 0, 1, 0, 1, 2, 0, 2, 1}, {0, 0, 1, 0, 2, 1, 0, 1, 2}, {0, 0, 1, 0, 2, 2, 0, 1, 1}, {0, 0, 1, 1, 0, 0, 1, 0, 1}, {0, 0, 1, 1, 0, 0, 1, 1, 0}, {0, 0, 1, 1, 0, 1, 0, 1, 0}, {0, 0, 1, 1, 0, 1, 1, 0, 0}, {0, 0, 1, 1, 0, 1, 2, 0, 2}, {0, 0, 1, 1, 0, 1, 2, 2, 0}, {0, 0, 1, 1, 0, 2, 1, 0, 2}, {0, 0, 1, 1, 0, 2, 1, 2, 0}, {0, 0, 1, 1, 0, 2, 2, 0, 1}, {0, 0, 1, 1, 0, 2, 2, 1, 0}, {0, 0, 1, 2, 0, 1, 1, 0, 2}, {0, 0, 1, 2, 0, 1, 1, 2, 0}, {0, 0, 1, 2, 0, 1, 2, 1, 0}, {0, 0, 1, 2, 0, 2, 1, 0, 1}, {0, 0, 1, 2, 0, 2, 1, 1, 0}, {0, 0, 2, 0, 1, 1, 0, 1, 2}, {0, 0, 2, 0, 1, 1, 0, 2, 1}, {0, 0, 2, 0, 1, 2, 0, 1, 1}, {0, 0, 2, 0, 2, 1, 0, 1, 1}, {0, 0, 2, 1, 0, 1, 1, 0, 2}, {0, 0, 2, 1, 0, 1, 1, 2, 0}, {0, 0, 2, 1, 0, 1, 2, 0, 1}, {0, 0, 2, 1, 0, 1, 2, 1, 0}, {0, 0, 2, 1, 0, 2, 1, 0, 1}, {0, 0, 2, 1, 0, 2, 1, 1, 0}, {0, 0, 2, 2, 0, 1, 1, 0, 1}, {0, 0, 2, 2, 0, 1, 1, 1, 0}, {0, 1, 0, 0, 0, 1, 0, 1, 1}, {0, 1, 0, 0, 0, 1, 1, 1, 0}, {0, 1, 0, 0, 1, 1, 0, 0, 1}, {0, 1, 0, 0, 1, 1, 0, 2, 2}, {0, 1, 0, 0, 1, 2, 0, 2, 1}, {0, 1, 0, 0, 2, 1, 0, 1, 2}, {0, 1, 0, 0, 2, 1, 0, 2, 1}, {0, 1, 0, 0, 2, 2, 0, 1, 1}, {0, 1, 0, 1, 0, 0, 0, 1, 1}, {0, 1, 0, 1, 0, 0, 1, 1, 0}, {0, 1, 0, 1, 0, 1, 0, 0, 1}, {0, 1, 0, 1, 0, 1, 0, 1, 0}, {0, 1, 0, 1, 0, 1, 0, 2, 2}, {0, 1, 0, 1, 0, 1, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 2, 2, 0}, {0, 1, 0, 1, 0, 2, 0, 1, 2}, {0, 1, 0, 1, 0, 2, 0, 2, 1}, {0, 1, 0, 1, 0, 2, 1, 2, 0}, {0, 1, 0, 1, 0, 2, 2, 1, 0}, {0, 1, 0, 1, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 1, 0, 2, 2, 0}, {0, 1, 0, 1, 2, 0, 1, 2, 0}, {0, 1, 0, 1, 2, 0, 2, 1, 0}, {0, 1, 0, 2, 0, 1, 0, 1, 2}, {0, 1, 0, 2, 0, 1, 0, 2, 1}, {0, 1, 0, 2, 0, 1, 1, 2, 0}, {0, 1, 0, 2, 0, 1, 2, 1, 0}, {0, 1, 0, 2, 0, 2, 0, 1, 1}, {0, 1, 0, 2, 0, 2, 1, 1, 0}, {0, 1, 0, 2, 1, 0, 1, 2, 0}, {0, 1, 0, 2, 2, 0, 1, 1, 0}, {0, 1, 1, 0, 0, 0, 0, 1, 1}, {0, 1, 1, 0, 0, 0, 1, 0, 1}, {0, 1, 1, 0, 0, 0, 1, 1, 0}, {0, 1, 1, 0, 0, 0, 1, 2, 2}, {0, 1, 1, 0, 0, 0, 2, 1, 2}, {0, 1, 1, 0, 0, 0, 2, 2, 1}, {0, 1, 1, 0, 0, 1, 0, 1, 0}, {0, 1, 1, 0, 0, 1, 0, 2, 2}, {0, 1, 1, 0, 0, 1, 1, 0, 0}, {0, 1, 1, 0, 0, 1, 2, 2, 0}, {0, 1, 1, 0, 0, 2, 0, 1, 2}, {0, 1, 1, 0, 0, 2, 0, 2, 1}, {0, 1, 1, 0, 0, 2, 1, 2, 0}, {0, 1, 1, 0, 0, 2, 2, 1, 0}, {0, 1, 1, 0, 1, 0, 0, 0, 1}, {0, 1, 1, 0, 1, 0, 0, 2, 2}, {0, 1, 1, 0, 1, 1, 0, 0, 0}, {0, 1, 1, 0, 1, 2, 0, 0, 2}, {0, 1, 1, 0, 1, 2, 0, 2, 0}, {0, 1, 1, 0, 2, 0, 0, 1, 2}, {0, 1, 1, 0, 2, 0, 0, 2, 1}, {0, 1, 1, 0, 2, 1, 0, 0, 2}, {0, 1, 1, 0, 2, 1, 0, 2, 0}, {0, 1, 1, 0, 2, 2, 0, 0, 1}, {0, 1, 1, 0, 2, 2, 0, 1, 0}, {0, 1, 1, 0, 2, 2, 0, 2, 2}, {0, 1, 1, 1, 0, 0, 0, 1, 0}, {0, 1, 1, 1, 0, 0, 1, 0, 0}, {0, 1, 1, 1, 0, 0, 2, 2, 0}, {0, 1, 1, 1, 0, 1, 0, 0, 0}, {0, 1, 1, 1, 0, 2, 0, 2, 0}, {0, 1, 1, 1, 0, 2, 2, 0, 0}, {0, 1, 1, 1, 1, 0, 0, 0, 0}, {0, 1, 1, 1, 2, 2, 0, 0, 0}, {0, 1, 1, 2, 0, 0, 1, 2, 0}, {0, 1, 1, 2, 0, 0, 2, 1, 0}, {0, 1, 1, 2, 0, 1, 0, 2, 0}, {0, 1, 1, 2, 0, 1, 2, 0, 0}, {0, 1, 1, 2, 0, 2, 0, 1, 0}, {0, 1, 1, 2, 0, 2, 1, 0, 0}, {0, 1, 1, 2, 0, 2, 2, 2, 0}, {0, 1, 1, 2, 1, 2, 0, 0, 0}, {0, 1, 1, 2, 2, 1, 0, 0, 0}, {0, 1, 2, 0, 0, 0, 1, 1, 2}, {0, 1, 2, 0, 0, 0, 1, 2, 1}, {0, 1, 2, 0, 0, 0, 2, 1, 1}, {0, 1, 2, 0, 0, 1, 0, 1, 2}, {0, 1, 2, 0, 0, 1, 0, 2, 1}, {0, 1, 2, 0, 0, 1, 1, 2, 0}, {0, 1, 2, 0, 0, 1, 2, 1, 0}, {0, 1, 2, 0, 0, 2, 0, 1, 1}, {0, 1, 2, 0, 0, 2, 1, 1, 0}, {0, 1, 2, 0, 1, 0, 0, 2, 1}, {0, 1, 2, 0, 1, 1, 0, 0, 2}, {0, 1, 2, 0, 1, 1, 0, 2, 0}, {0, 1, 2, 0, 1, 2, 0, 0, 1}, {0, 1, 2, 0, 1, 2, 0, 2, 2}, {0, 1, 2, 0, 2, 0, 0, 1, 1}, {0, 1, 2, 0, 2, 1, 0, 0, 1}, {0, 1, 2, 0, 2, 1, 0, 1, 0}, {0, 1, 2, 0, 2, 1, 0, 2, 2}, {0, 1, 2, 0, 2, 2, 0, 1, 2}, {0, 1, 2, 0, 2, 2, 0, 2, 1}, {0, 1, 2, 1, 0, 0, 1, 2, 0}, {0, 1, 2, 1, 0, 0, 2, 1, 0}, {0, 1, 2, 1, 0, 1, 0, 2, 0}, {0, 1, 2, 1, 0, 1, 2, 0, 0}, {0, 1, 2, 1, 0, 2, 0, 1, 0}, {0, 1, 2, 1, 0, 2, 1, 0, 0}, {0, 1, 2, 1, 0, 2, 2, 2, 0}, {0, 1, 2, 1, 1, 2, 0, 0, 0}, {0, 1, 2, 1, 2, 1, 0, 0, 0}, {0, 1, 2, 2, 0, 0, 1, 1, 0}, {0, 1, 2, 2, 0, 1, 0, 1, 0}, {0, 1, 2, 2, 0, 1, 1, 0, 0}, {0, 1, 2, 2, 0, 1, 2, 2, 0}, {0, 1, 2, 2, 0, 2, 1, 2, 0}, {0, 1, 2, 2, 0, 2, 2, 1, 0}, {0, 1, 2, 2, 1, 1, 0, 0, 0}, {0, 2, 0, 0, 1, 1, 0, 1, 2}, {0, 2, 0, 0, 1, 1, 0, 2, 1}, {0, 2, 0, 0, 1, 2, 0, 1, 1}, {0, 2, 0, 0, 2, 1, 0, 1, 1}, {0, 2, 0, 1, 0, 1, 0, 1, 2}, {0, 2, 0, 1, 0, 1, 0, 2, 1}, {0, 2, 0, 1, 0, 1, 1, 2, 0}, {0, 2, 0, 1, 0, 1, 2, 1, 0}, {0, 2, 0, 1, 0, 2, 0, 1, 1}, {0, 2, 0, 1, 0, 2, 1, 1, 0}, {0, 2, 0, 1, 1, 0, 1, 2, 0}, {0, 2, 0, 1, 1, 0, 2, 1, 0}, {0, 2, 0, 1, 2, 0, 1, 1, 0}, {0, 2, 0, 2, 0, 1, 0, 1, 1}, {0, 2, 0, 2, 0, 1, 1, 1, 0}, {0, 2, 0, 2, 1, 0, 1, 1, 0}, {0, 2, 1, 0, 0, 0, 1, 1, 2}, {0, 2, 1, 0, 0, 0, 1, 2, 1}, {0, 2, 1, 0, 0, 0, 2, 1, 1}, {0, 2, 1, 0, 0, 1, 0, 1, 2}, {0, 2, 1, 0, 0, 1, 1, 2, 0}, {0, 2, 1, 0, 0, 1, 2, 1, 0}, {0, 2, 1, 0, 0, 2, 0, 1, 1}, {0, 2, 1, 0, 0, 2, 1, 1, 0}, {0, 2, 1, 0, 1, 0, 0, 1, 2}, {0, 2, 1, 0, 1, 0, 0, 2, 1}, {0, 2, 1, 0, 1, 1, 0, 0, 2}, {0, 2, 1, 0, 1, 1, 0, 2, 0}, {0, 2, 1, 0, 1, 2, 0, 0, 1}, {0, 2, 1, 0, 1, 2, 0, 1, 0}, {0, 2, 1, 0, 1, 2, 0, 2, 2}, {0, 2, 1, 0, 2, 0, 0, 1, 1}, {0, 2, 1, 0, 2, 1, 0, 1, 0}, {0, 2, 1, 0, 2, 1, 0, 2, 2}, {0, 2, 1, 0, 2, 2, 0, 1, 2}, {0, 2, 1, 0, 2, 2, 0, 2, 1}, {0, 2, 1, 1, 0, 0, 1, 2, 0}, {0, 2, 1, 1, 0, 0, 2, 1, 0}, {0, 2, 1, 1, 0, 1, 0, 2, 0}, {0, 2, 1, 1, 0, 1, 2, 0, 0}, {0, 2, 1, 1, 0, 2, 0, 1, 0}, {0, 2, 1, 1, 0, 2, 1, 0, 0}, {0, 2, 1, 1, 0, 2, 2, 2, 0}, {0, 2, 1, 1, 1, 2, 0, 0, 0}, {0, 2, 1, 1, 2, 1, 0, 0, 0}, {0, 2, 1, 2, 0, 0, 1, 1, 0}, {0, 2, 1, 2, 0, 1, 0, 1, 0}, {0, 2, 1, 2, 0, 1, 1, 0, 0}, {0, 2, 1, 2, 0, 1, 2, 2, 0}, {0, 2, 1, 2, 0, 2, 1, 2, 0}, {0, 2, 1, 2, 0, 2, 2, 1, 0}, {0, 2, 1, 2, 1, 1, 0, 0, 0}, {0, 2, 2, 0, 0, 1, 0, 1, 1}, {0, 2, 2, 0, 0, 1, 1, 1, 0}, {0, 2, 2, 0, 1, 0, 0, 1, 1}, {0, 2, 2, 0, 1, 1, 0, 0, 1}, {0, 2, 2, 0, 1, 1, 0, 1, 0}, {0, 2, 2, 0, 1, 1, 0, 2, 2}, {0, 2, 2, 0, 1, 2, 0, 1, 2}, {0, 2, 2, 0, 1, 2, 0, 2, 1}, {0, 2, 2, 0, 2, 1, 0, 1, 2}, {0, 2, 2, 0, 2, 1, 0, 2, 1}, {0, 2, 2, 0, 2, 2, 0, 1, 1}, {0, 2, 2, 1, 0, 0, 1, 1, 0}, {0, 2, 2, 1, 0, 1, 0, 1, 0}, {0, 2, 2, 1, 0, 1, 1, 0, 0}, {0, 2, 2, 1, 0, 1, 2, 2, 0}, {0, 2, 2, 1, 0, 2, 1, 2, 0}, {0, 2, 2, 1, 0, 2, 2, 1, 0}, {0, 2, 2, 2, 0, 1, 1, 2, 0}, {0, 2, 2, 2, 0, 1, 2, 1, 0}, {0, 2, 2, 2, 0, 2, 1, 1, 0}, {1, 0, 0, 0, 0, 1, 0, 1, 1}, {1, 0, 0, 0, 0, 1, 1, 0, 1}, {1, 0, 0, 0, 1, 0, 1, 1, 0}, {1, 0, 0, 1, 0, 0, 0, 1, 1}, {1, 0, 0, 1, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 1, 0, 1, 0}, {1, 0, 0, 1, 0, 1, 0, 2, 2}, {1, 0, 0, 1, 0, 1, 2, 0, 2}, {1, 0, 0, 1, 0, 2, 0, 1, 2}, {1, 0, 0, 1, 0, 2, 0, 2, 1}, {1, 0, 0, 1, 0, 2, 2, 0, 1}, {1, 0, 0, 1, 1, 0, 0, 1, 0}, {1, 0, 0, 1, 1, 0, 2, 2, 0}, {1, 0, 0, 1, 2, 0, 2, 1, 0}, {1, 0, 0, 2, 0, 1, 0, 1, 2}, {1, 0, 0, 2, 0, 1, 0, 2, 1}, {1, 0, 0, 2, 0, 1, 1, 0, 2}, {1, 0, 0, 2, 0, 1, 2, 0, 1}, {1, 0, 0, 2, 0, 2, 0, 1, 1}, {1, 0, 0, 2, 0, 2, 1, 0, 1}, {1, 0, 0, 2, 1, 0, 1, 2, 0}, {1, 0, 0, 2, 1, 0, 2, 1, 0}, {1, 0, 0, 2, 2, 0, 1, 1, 0}, {1, 0, 1, 0, 0, 0, 0, 1, 1}, {1, 0, 1, 0, 0, 0, 1, 0, 1}, {1, 0, 1, 0, 0, 0, 1, 1, 0}, {1, 0, 1, 0, 0, 0, 1, 2, 2}, {1, 0, 1, 0, 0, 0, 2, 1, 2}, {1, 0, 1, 0, 0, 0, 2, 2, 1}, {1, 0, 1, 0, 0, 1, 1, 0, 0}, {1, 0, 1, 0, 0, 1, 2, 0, 2}, {1, 0, 1, 0, 0, 2, 1, 0, 2}, {1, 0, 1, 0, 0, 2, 2, 0, 1}, {1, 0, 1, 0, 1, 1, 0, 0, 0}, {1, 0, 1, 1, 0, 0, 0, 0, 1}, {1, 0, 1, 1, 0, 0, 2, 0, 2}, {1, 0, 1, 1, 0, 1, 0, 0, 0}, {1, 0, 1, 1, 0, 2, 0, 0, 2}, {1, 0, 1, 1, 0, 2, 2, 0, 0}, {1, 0, 1, 1, 1, 0, 0, 0, 0}, {1, 0, 1, 1, 2, 2, 0, 0, 0}, {1, 0, 1, 2, 0, 0, 1, 0, 2}, {1, 0, 1, 2, 0, 0, 2, 0, 1}, {1, 0, 1, 2, 0, 1, 0, 0, 2}, {1, 0, 1, 2, 0, 1, 2, 0, 0}, {1, 0, 1, 2, 0, 2, 0, 0, 1}, {1, 0, 1, 2, 0, 2, 1, 0, 0}, {1, 0, 1, 2, 0, 2, 2, 0, 2}, {1, 0, 1, 2, 1, 2, 0, 0, 0}, {1, 0, 1, 2, 2, 1, 0, 0, 0}, {1, 0, 2, 0, 0, 0, 1, 1, 2}, {1, 0, 2, 0, 0, 0, 1, 2, 1}, {1, 0, 2, 0, 0, 0, 2, 1, 1}, {1, 0, 2, 0, 0, 1, 1, 0, 2}, {1, 0, 2, 0, 0, 1, 2, 0, 1}, {1, 0, 2, 0, 0, 2, 1, 0, 1}, {1, 0, 2, 1, 0, 0, 2, 0, 1}, {1, 0, 2, 1, 0, 1, 0, 0, 2}, {1, 0, 2, 1, 0, 1, 2, 0, 0}, {1, 0, 2, 1, 0, 2, 0, 0, 1}, {1, 0, 2, 1, 0, 2, 2, 0, 2}, {1, 0, 2, 1, 1, 2, 0, 0, 0}, {1, 0, 2, 1, 2, 1, 0, 0, 0}, {1, 0, 2, 2, 0, 0, 1, 0, 1}, {1, 0, 2, 2, 0, 1, 0, 0, 1}, {1, 0, 2, 2, 0, 1, 1, 0, 0}, {1, 0, 2, 2, 0, 1, 2, 0, 2}, {1, 0, 2, 2, 0, 2, 1, 0, 2}, {1, 0, 2, 2, 0, 2, 2, 0, 1}, {1, 0, 2, 2, 1, 1, 0, 0, 0}, {1, 1, 0, 0, 0, 0, 0, 1, 1}, {1, 1, 0, 0, 0, 0, 1, 0, 1}, {1, 1, 0, 0, 0, 0, 1, 1, 0}, {1, 1, 0, 0, 0, 0, 1, 2, 2}, {1, 1, 0, 0, 0, 0, 2, 1, 2}, {1, 1, 0, 0, 0, 0, 2, 2, 1}, {1, 1, 0, 0, 0, 1, 0, 0, 1}, {1, 1, 0, 0, 0, 1, 0, 1, 0}, {1, 1, 0, 0, 0, 1, 0, 2, 2}, {1, 1, 0, 0, 0, 2, 0, 1, 2}, {1, 1, 0, 0, 0, 2, 0, 2, 1}, {1, 1, 0, 0, 1, 0, 1, 0, 0}, {1, 1, 0, 0, 1, 0, 2, 2, 0}, {1, 1, 0, 0, 1, 1, 0, 0, 0}, {1, 1, 0, 0, 2, 0, 1, 2, 0}, {1, 1, 0, 0, 2, 0, 2, 1, 0}, {1, 1, 0, 1, 0, 0, 0, 0, 1}, {1, 1, 0, 1, 0, 0, 0, 1, 0}, {1, 1, 0, 1, 0, 0, 0, 2, 2}, {1, 1, 0, 1, 0, 0, 2, 2, 0}, {1, 1, 0, 1, 0, 1, 0, 0, 0}, {1, 1, 0, 1, 0, 2, 0, 0, 2}, {1, 1, 0, 1, 0, 2, 0, 2, 0}, {1, 1, 0, 1, 1, 0, 0, 0, 0}, {1, 1, 0, 1, 2, 0, 0, 2, 0}, {1, 1, 0, 1, 2, 0, 2, 0, 0}, {1, 1, 0, 1, 2, 2, 0, 0, 0}, {1, 1, 0, 2, 0, 0, 0, 1, 2}, {1, 1, 0, 2, 0, 0, 0, 2, 1}, {1, 1, 0, 2, 0, 0, 1, 2, 0}, {1, 1, 0, 2, 0, 0, 2, 1, 0}, {1, 1, 0, 2, 0, 1, 0, 0, 2}, {1, 1, 0, 2, 0, 1, 0, 2, 0}, {1, 1, 0, 2, 0, 2, 0, 0, 1}, {1, 1, 0, 2, 0, 2, 0, 1, 0}, {1, 1, 0, 2, 0, 2, 0, 2, 2}, {1, 1, 0, 2, 1, 0, 0, 2, 0}, {1, 1, 0, 2, 1, 0, 2, 0, 0}, {1, 1, 0, 2, 1, 2, 0, 0, 0}, {1, 1, 0, 2, 2, 0, 0, 1, 0}, {1, 1, 0, 2, 2, 0, 1, 0, 0}, {1, 1, 0, 2, 2, 0, 2, 2, 0}, {1, 1, 0, 2, 2, 1, 0, 0, 0}, {1, 1, 2, 0, 0, 0, 0, 1, 2}, {1, 1, 2, 0, 0, 0, 0, 2, 1}, {1, 1, 2, 0, 0, 0, 1, 0, 2}, {1, 1, 2, 0, 0, 0, 1, 2, 0}, {1, 1, 2, 0, 0, 0, 2, 0, 1}, {1, 1, 2, 0, 0, 0, 2, 1, 0}, {1, 1, 2, 0, 0, 0, 2, 2, 2}, {1, 1, 2, 0, 1, 2, 0, 0, 0}, {1, 1, 2, 0, 2, 1, 0, 0, 0}, {1, 1, 2, 1, 0, 2, 0, 0, 0}, {1, 1, 2, 1, 2, 0, 0, 0, 0}, {1, 1, 2, 2, 0, 1, 0, 0, 0}, {1, 1, 2, 2, 1, 0, 0, 0, 0}, {1, 1, 2, 2, 2, 2, 0, 0, 0}, {1, 2, 0, 0, 0, 0, 1, 1, 2}, {1, 2, 0, 0, 0, 0, 1, 2, 1}, {1, 2, 0, 0, 0, 0, 2, 1, 1}, {1, 2, 0, 0, 0, 1, 0, 1, 2}, {1, 2, 0, 0, 0, 1, 0, 2, 1}, {1, 2, 0, 0, 0, 2, 0, 1, 1}, {1, 2, 0, 0, 1, 0, 1, 2, 0}, {1, 2, 0, 0, 1, 0, 2, 1, 0}, {1, 2, 0, 0, 2, 0, 1, 1, 0}, {1, 2, 0, 1, 0, 0, 0, 1, 2}, {1, 2, 0, 1, 0, 0, 0, 2, 1}, {1, 2, 0, 1, 0, 0, 2, 1, 0}, {1, 2, 0, 1, 0, 1, 0, 0, 2}, {1, 2, 0, 1, 0, 1, 0, 2, 0}, {1, 2, 0, 1, 0, 2, 0, 0, 1}, {1, 2, 0, 1, 0, 2, 0, 1, 0}, {1, 2, 0, 1, 0, 2, 0, 2, 2}, {1, 2, 0, 1, 1, 0, 0, 2, 0}, {1, 2, 0, 1, 1, 0, 2, 0, 0}, {1, 2, 0, 1, 1, 2, 0, 0, 0}, {1, 2, 0, 1, 2, 0, 0, 1, 0}, {1, 2, 0, 1, 2, 0, 2, 2, 0}, {1, 2, 0, 1, 2, 1, 0, 0, 0}, {1, 2, 0, 2, 0, 0, 0, 1, 1}, {1, 2, 0, 2, 0, 0, 1, 1, 0}, {1, 2, 0, 2, 0, 1, 0, 0, 1}, {1, 2, 0, 2, 0, 1, 0, 1, 0}, {1, 2, 0, 2, 0, 1, 0, 2, 2}, {1, 2, 0, 2, 0, 2, 0, 1, 2}, {1, 2, 0, 2, 0, 2, 0, 2, 1}, {1, 2, 0, 2, 1, 0, 0, 1, 0}, {1, 2, 0, 2, 1, 0, 1, 0, 0}, {1, 2, 0, 2, 1, 0, 2, 2, 0}, {1, 2, 0, 2, 1, 1, 0, 0, 0}, {1, 2, 0, 2, 2, 0, 1, 2, 0}, {1, 2, 0, 2, 2, 0, 2, 1, 0}, {1, 2, 1, 0, 0, 0, 0, 1, 2}, {1, 2, 1, 0, 0, 0, 0, 2, 1}, {1, 2, 1, 0, 0, 0, 1, 0, 2}, {1, 2, 1, 0, 0, 0, 1, 2, 0}, {1, 2, 1, 0, 0, 0, 2, 0, 1}, {1, 2, 1, 0, 0, 0, 2, 1, 0}, {1, 2, 1, 0, 0, 0, 2, 2, 2}, {1, 2, 1, 0, 1, 2, 0, 0, 0}, {1, 2, 1, 0, 2, 1, 0, 0, 0}, {1, 2, 1, 1, 0, 2, 0, 0, 0}, {1, 2, 1, 1, 2, 0, 0, 0, 0}, {1, 2, 1, 2, 0, 1, 0, 0, 0}, {1, 2, 1, 2, 1, 0, 0, 0, 0}, {1, 2, 1, 2, 2, 2, 0, 0, 0}, {1, 2, 2, 0, 0, 0, 0, 1, 1}, {1, 2, 2, 0, 0, 0, 1, 0, 1}, {1, 2, 2, 0, 0, 0, 1, 1, 0}, {1, 2, 2, 0, 0, 0, 1, 2, 2}, {1, 2, 2, 0, 0, 0, 2, 1, 2}, {1, 2, 2, 0, 0, 0, 2, 2, 1}, {1, 2, 2, 0, 1, 1, 0, 0, 0}, {1, 2, 2, 1, 0, 1, 0, 0, 0}, {1, 2, 2, 1, 1, 0, 0, 0, 0}, {1, 2, 2, 1, 2, 2, 0, 0, 0}, {1, 2, 2, 2, 1, 2, 0, 0, 0}, {1, 2, 2, 2, 2, 1, 0, 0, 0}, {2, 0, 0, 1, 0, 1, 0, 1, 2}, {2, 0, 0, 1, 0, 1, 0, 2, 1}, {2, 0, 0, 1, 0, 1, 1, 0, 2}, {2, 0, 0, 1, 0, 1, 2, 0, 1}, {2, 0, 0, 1, 0, 2, 0, 1, 1}, {2, 0, 0, 1, 0, 2, 1, 0, 1}, {2, 0, 0, 1, 1, 0, 1, 2, 0}, {2, 0, 0, 1, 1, 0, 2, 1, 0}, {2, 0, 0, 1, 2, 0, 1, 1, 0}, {2, 0, 0, 2, 0, 1, 0, 1, 1}, {2, 0, 0, 2, 0, 1, 1, 0, 1}, {2, 0, 0, 2, 1, 0, 1, 1, 0}, {2, 0, 1, 0, 0, 0, 1, 1, 2}, {2, 0, 1, 0, 0, 0, 1, 2, 1}, {2, 0, 1, 0, 0, 0, 2, 1, 1}, {2, 0, 1, 0, 0, 1, 1, 0, 2}, {2, 0, 1, 0, 0, 2, 1, 0, 1}, {2, 0, 1, 1, 0, 0, 1, 0, 2}, {2, 0, 1, 1, 0, 0, 2, 0, 1}, {2, 0, 1, 1, 0, 1, 0, 0, 2}, {2, 0, 1, 1, 0, 1, 2, 0, 0}, {2, 0, 1, 1, 0, 2, 0, 0, 1}, {2, 0, 1, 1, 0, 2, 1, 0, 0}, {2, 0, 1, 1, 0, 2, 2, 0, 2}, {2, 0, 1, 1, 1, 2, 0, 0, 0}, {2, 0, 1, 1, 2, 1, 0, 0, 0}, {2, 0, 1, 2, 0, 0, 1, 0, 1}, {2, 0, 1, 2, 0, 1, 1, 0, 0}, {2, 0, 1, 2, 0, 1, 2, 0, 2}, {2, 0, 1, 2, 0, 2, 1, 0, 2}, {2, 0, 1, 2, 0, 2, 2, 0, 1}, {2, 0, 1, 2, 1, 1, 0, 0, 0}, {2, 0, 2, 0, 0, 1, 1, 0, 1}, {2, 0, 2, 1, 0, 0, 1, 0, 1}, {2, 0, 2, 1, 0, 1, 0, 0, 1}, {2, 0, 2, 1, 0, 1, 1, 0, 0}, {2, 0, 2, 1, 0, 1, 2, 0, 2}, {2, 0, 2, 1, 0, 2, 1, 0, 2}, {2, 0, 2, 1, 0, 2, 2, 0, 1}, {2, 0, 2, 2, 0, 1, 1, 0, 2}, {2, 0, 2, 2, 0, 1, 2, 0, 1}, {2, 0, 2, 2, 0, 2, 1, 0, 1}, {2, 1, 0, 0, 0, 0, 1, 1, 2}, {2, 1, 0, 0, 0, 0, 1, 2, 1}, {2, 1, 0, 0, 0, 0, 2, 1, 1}, {2, 1, 0, 0, 0, 1, 0, 1, 2}, {2, 1, 0, 0, 0, 1, 0, 2, 1}, {2, 1, 0, 0, 0, 2, 0, 1, 1}, {2, 1, 0, 0, 1, 0, 1, 2, 0}, {2, 1, 0, 0, 2, 0, 1, 1, 0}, {2, 1, 0, 1, 0, 0, 0, 1, 2}, {2, 1, 0, 1, 0, 0, 0, 2, 1}, {2, 1, 0, 1, 0, 0, 1, 2, 0}, {2, 1, 0, 1, 0, 0, 2, 1, 0}, {2, 1, 0, 1, 0, 1, 0, 0, 2}, {2, 1, 0, 1, 0, 1, 0, 2, 0}, {2, 1, 0, 1, 0, 2, 0, 0, 1}, {2, 1, 0, 1, 0, 2, 0, 1, 0}, {2, 1, 0, 1, 0, 2, 0, 2, 2}, {2, 1, 0, 1, 1, 0, 0, 2, 0}, {2, 1, 0, 1, 1, 0, 2, 0, 0}, {2, 1, 0, 1, 1, 2, 0, 0, 0}, {2, 1, 0, 1, 2, 0, 0, 1, 0}, {2, 1, 0, 1, 2, 0, 1, 0, 0}, {2, 1, 0, 1, 2, 0, 2, 2, 0}, {2, 1, 0, 1, 2, 1, 0, 0, 0}, {2, 1, 0, 2, 0, 0, 0, 1, 1}, {2, 1, 0, 2, 0, 0, 1, 1, 0}, {2, 1, 0, 2, 0, 1, 0, 0, 1}, {2, 1, 0, 2, 0, 1, 0, 1, 0}, {2, 1, 0, 2, 0, 1, 0, 2, 2}, {2, 1, 0, 2, 0, 2, 0, 1, 2}, {2, 1, 0, 2, 0, 2, 0, 2, 1}, {2, 1, 0, 2, 1, 0, 1, 0, 0}, {2, 1, 0, 2, 1, 0, 2, 2, 0}, {2, 1, 0, 2, 1, 1, 0, 0, 0}, {2, 1, 0, 2, 2, 0, 1, 2, 0}, {2, 1, 0, 2, 2, 0, 2, 1, 0}, {2, 1, 1, 0, 0, 0, 0, 1, 2}, {2, 1, 1, 0, 0, 0, 0, 2, 1}, {2, 1, 1, 0, 0, 0, 1, 0, 2}, {2, 1, 1, 0, 0, 0, 1, 2, 0}, {2, 1, 1, 0, 0, 0, 2, 0, 1}, {2, 1, 1, 0, 0, 0, 2, 1, 0}, {2, 1, 1, 0, 0, 0, 2, 2, 2}, {2, 1, 1, 0, 1, 2, 0, 0, 0}, {2, 1, 1, 0, 2, 1, 0, 0, 0}, {2, 1, 1, 1, 0, 2, 0, 0, 0}, {2, 1, 1, 1, 2, 0, 0, 0, 0}, {2, 1, 1, 2, 0, 1, 0, 0, 0}, {2, 1, 1, 2, 1, 0, 0, 0, 0}, {2, 1, 1, 2, 2, 2, 0, 0, 0}, {2, 1, 2, 0, 0, 0, 0, 1, 1}, {2, 1, 2, 0, 0, 0, 1, 0, 1}, {2, 1, 2, 0, 0, 0, 1, 1, 0}, {2, 1, 2, 0, 0, 0, 1, 2, 2}, {2, 1, 2, 0, 0, 0, 2, 1, 2}, {2, 1, 2, 0, 0, 0, 2, 2, 1}, {2, 1, 2, 0, 1, 1, 0, 0, 0}, {2, 1, 2, 1, 0, 1, 0, 0, 0}, {2, 1, 2, 1, 1, 0, 0, 0, 0}, {2, 1, 2, 1, 2, 2, 0, 0, 0}, {2, 1, 2, 2, 1, 2, 0, 0, 0}, {2, 1, 2, 2, 2, 1, 0, 0, 0}, {2, 2, 0, 0, 0, 1, 0, 1, 1}, {2, 2, 0, 0, 1, 0, 1, 1, 0}, {2, 2, 0, 1, 0, 0, 0, 1, 1}, {2, 2, 0, 1, 0, 0, 1, 1, 0}, {2, 2, 0, 1, 0, 1, 0, 0, 1}, {2, 2, 0, 1, 0, 1, 0, 1, 0}, {2, 2, 0, 1, 0, 1, 0, 2, 2}, {2, 2, 0, 1, 0, 2, 0, 1, 2}, {2, 2, 0, 1, 0, 2, 0, 2, 1}, {2, 2, 0, 1, 1, 0, 0, 1, 0}, {2, 2, 0, 1, 1, 0, 1, 0, 0}, {2, 2, 0, 1, 1, 0, 2, 2, 0}, {2, 2, 0, 1, 2, 0, 1, 2, 0}, {2, 2, 0, 1, 2, 0, 2, 1, 0}, {2, 2, 0, 2, 0, 1, 0, 1, 2}, {2, 2, 0, 2, 0, 1, 0, 2, 1}, {2, 2, 0, 2, 0, 2, 0, 1, 1}, {2, 2, 0, 2, 1, 0, 1, 2, 0}, {2, 2, 0, 2, 1, 0, 2, 1, 0}, {2, 2, 0, 2, 2, 0, 1, 1, 0}, {2, 2, 1, 0, 0, 0, 0, 1, 1}, {2, 2, 1, 0, 0, 0, 1, 0, 1}, {2, 2, 1, 0, 0, 0, 1, 1, 0}, {2, 2, 1, 0, 0, 0, 1, 2, 2}, {2, 2, 1, 0, 0, 0, 2, 1, 2}, {2, 2, 1, 0, 0, 0, 2, 2, 1}, {2, 2, 1, 0, 1, 1, 0, 0, 0}, {2, 2, 1, 1, 0, 1, 0, 0, 0}, {2, 2, 1, 1, 1, 0, 0, 0, 0}, {2, 2, 1, 1, 2, 2, 0, 0, 0}, {2, 2, 1, 2, 1, 2, 0, 0, 0}, {2, 2, 1, 2, 2, 1, 0, 0, 0}, {2, 2, 2, 0, 0, 0, 1, 1, 2}, {2, 2, 2, 0, 0, 0, 1, 2, 1}, {2, 2, 2, 0, 0, 0, 2, 1, 1}, {2, 2, 2, 1, 1, 2, 0, 0, 0}, {2, 2, 2, 1, 2, 1, 0, 0, 0}, {2, 2, 2, 2, 1, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 1, 2, 1}, {0, 0, 1, 0, 0, 1, 2, 1, 1}, {0, 0, 1, 0, 0, 2, 1, 1, 1}, {0, 0, 1, 0, 1, 0, 1, 1, 2}, {0, 0, 1, 0, 1, 0, 1, 2, 1}, {0, 0, 1, 0, 1, 1, 1, 0, 2}, {0, 0, 1, 0, 1, 1, 1, 2, 0}, {0, 0, 1, 0, 1, 1, 2, 0, 1}, {0, 0, 1, 0, 1, 2, 1, 0, 1}, {0, 0, 1, 0, 1, 2, 1, 1, 0}, {0, 0, 1, 0, 1, 2, 1, 2, 2}, {0, 0, 1, 0, 2, 0, 1, 1, 1}, {0, 0, 1, 0, 2, 1, 1, 0, 1}, {0, 0, 1, 0, 2, 1, 2, 2, 1}, {0, 0, 1, 1, 0, 1, 0, 2, 1}, {0, 0, 1, 1, 1, 0, 1, 0, 2}, {0, 0, 1, 1, 1, 0, 1, 2, 0}, {0, 0, 1, 1, 1, 1, 0, 0, 2}, {0, 0, 1, 1, 1, 1, 0, 2, 0}, {0, 0, 1, 1, 1, 1, 2, 0, 0}, {0, 0, 1, 1, 1, 2, 1, 0, 0}, {0, 0, 1, 1, 2, 1, 0, 0, 1}, {0, 0, 1, 2, 0, 0, 1, 1, 1}, {0, 0, 1, 2, 0, 1, 0, 1, 1}, {0, 0, 1, 2, 0, 1, 2, 2, 1}, {0, 0, 1, 2, 1, 0, 1, 0, 1}, {0, 0, 1, 2, 1, 0, 1, 1, 0}, {0, 0, 1, 2, 1, 0, 1, 2, 2}, {0, 0, 1, 2, 1, 1, 0, 0, 1}, {0, 0, 1, 2, 1, 1, 1, 0, 0}, {0, 0, 1, 2, 1, 2, 1, 0, 2}, {0, 0, 1, 2, 1, 2, 1, 2, 0}, {0, 0, 1, 2, 2, 1, 0, 2, 1}, {0, 0, 1, 2, 2, 1, 2, 0, 1}, {0, 0, 2, 0, 0, 1, 1, 1, 1}, {0, 0, 2, 0, 1, 0, 1, 1, 1}, {0, 0, 2, 0, 2, 2, 1, 1, 1}, {0, 0, 2, 1, 0, 0, 1, 1, 1}, {0, 0, 2, 1, 1, 1, 0, 0, 1}, {0, 0, 2, 1, 1, 1, 0, 1, 0}, {0, 0, 2, 1, 1, 1, 0, 2, 2}, {0, 0, 2, 1, 1, 1, 1, 0, 0}, {0, 0, 2, 1, 1, 1, 2, 0, 2}, {0, 0, 2, 1, 1, 1, 2, 2, 0}, {0, 0, 2, 2, 0, 2, 1, 1, 1}, {0, 0, 2, 2, 2, 0, 1, 1, 1}, {0, 1, 0, 0, 0, 2, 1, 1, 1}, {0, 1, 0, 0, 1, 0, 1, 1, 2}, {0, 1, 0, 0, 1, 0, 2, 1, 1}, {0, 1, 0, 0, 1, 1, 2, 1, 0}, {0, 1, 0, 0, 1, 2, 1, 1, 0}, {0, 1, 0, 0, 1, 2, 2, 1, 2}, {0, 1, 0, 0, 2, 0, 1, 1, 1}, {0, 1, 0, 1, 1, 0, 0, 1, 2}, {0, 1, 0, 1, 1, 1, 0, 0, 2}, {0, 1, 0, 1, 1, 1, 0, 2, 0}, {0, 1, 0, 1, 1, 1, 2, 0, 0}, {0, 1, 0, 1, 1, 2, 0, 1, 0}, {0, 1, 0, 2, 0, 0, 1, 1, 1}, {0, 1, 0, 2, 1, 0, 0, 1, 1}, {0, 1, 0, 2, 1, 0, 2, 1, 2}, {0, 1, 0, 2, 1, 1, 0, 1, 0}, {0, 1, 0, 2, 1, 2, 0, 1, 2}, {0, 1, 0, 2, 1, 2, 2, 1, 0}, {0, 1, 1, 0, 0, 1, 2, 0, 1}, {0, 1, 1, 0, 1, 0, 1, 0, 2}, {0, 1, 1, 0, 1, 0, 1, 2, 0}, {0, 1, 1, 0, 1, 0, 2, 1, 0}, {0, 1, 1, 0, 1, 2, 1, 0, 0}, {0, 1, 1, 2, 0, 1, 0, 0, 1}, {0, 1, 1, 2, 1, 0, 0, 1, 0}, {0, 1, 1, 2, 1, 0, 1, 0, 0}, {0, 1, 2, 0, 1, 0, 1, 1, 0}, {0, 1, 2, 0, 1, 0, 2, 1, 2}, {0, 1, 2, 0, 1, 2, 2, 1, 0}, {0, 1, 2, 1, 1, 0, 0, 1, 0}, {0, 1, 2, 2, 1, 0, 0, 1, 2}, {0, 1, 2, 2, 1, 0, 2, 1, 0}, {0, 1, 2, 2, 1, 2, 0, 1, 0}, {0, 2, 0, 0, 0, 1, 1, 1, 1}, {0, 2, 0, 0, 1, 0, 1, 1, 1}, {0, 2, 0, 0, 2, 2, 1, 1, 1}, {0, 2, 0, 1, 0, 0, 1, 1, 1}, {0, 2, 0, 1, 1, 1, 0, 0, 1}, {0, 2, 0, 1, 1, 1, 0, 1, 0}, {0, 2, 0, 1, 1, 1, 0, 2, 2}, {0, 2, 0, 1, 1, 1, 1, 0, 0}, {0, 2, 0, 1, 1, 1, 2, 0, 2}, {0, 2, 0, 1, 1, 1, 2, 2, 0}, {0, 2, 0, 2, 0, 2, 1, 1, 1}, {0, 2, 0, 2, 2, 0, 1, 1, 1}, {0, 2, 1, 0, 0, 1, 1, 0, 1}, {0, 2, 1, 0, 0, 1, 2, 2, 1}, {0, 2, 1, 0, 1, 0, 1, 0, 1}, {0, 2, 1, 0, 1, 0, 1, 1, 0}, {0, 2, 1, 0, 1, 0, 1, 2, 2}, {0, 2, 1, 0, 1, 1, 1, 0, 0}, {0, 2, 1, 0, 1, 2, 1, 0, 2}, {0, 2, 1, 0, 1, 2, 1, 2, 0}, {0, 2, 1, 0, 2, 1, 2, 0, 1}, {0, 2, 1, 1, 0, 1, 0, 0, 1}, {0, 2, 1, 1, 1, 0, 1, 0, 0}, {0, 2, 1, 2, 0, 1, 0, 2, 1}, {0, 2, 1, 2, 0, 1, 2, 0, 1}, {0, 2, 1, 2, 1, 0, 1, 0, 2}, {0, 2, 1, 2, 1, 0, 1, 2, 0}, {0, 2, 1, 2, 1, 2, 1, 0, 0}, {0, 2, 1, 2, 2, 1, 0, 0, 1}, {0, 2, 2, 0, 0, 2, 1, 1, 1}, {0, 2, 2, 0, 2, 0, 1, 1, 1}, {0, 2, 2, 1, 1, 1, 0, 0, 2}, {0, 2, 2, 1, 1, 1, 0, 2, 0}, {0, 2, 2, 1, 1, 1, 2, 0, 0}, {0, 2, 2, 2, 0, 0, 1, 1, 1}, {1, 0, 0, 0, 0, 2, 1, 1, 1}, {1, 0, 0, 0, 1, 0, 1, 2, 1}, {1, 0, 0, 0, 1, 0, 2, 1, 1}, {1, 0, 0, 0, 1, 1, 0, 2, 1}, {1, 0, 0, 0, 1, 1, 2, 0, 1}, {1, 0, 0, 0, 1, 2, 0, 1, 1}, {1, 0, 0, 0, 1, 2, 1, 0, 1}, {1, 0, 0, 0, 1, 2, 2, 2, 1}, {1, 0, 0, 0, 2, 0, 1, 1, 1}, {1, 0, 0, 1, 0, 0, 1, 1, 2}, {1, 0, 0, 1, 0, 0, 1, 2, 1}, {1, 0, 0, 1, 0, 1, 1, 2, 0}, {1, 0, 0, 1, 0, 2, 1, 1, 0}, {1, 0, 0, 1, 0, 2, 1, 2, 2}, {1, 0, 0, 1, 1, 0, 0, 2, 1}, {1, 0, 0, 1, 1, 0, 1, 0, 2}, {1, 0, 0, 1, 1, 0, 2, 0, 1}, {1, 0, 0, 1, 1, 1, 0, 0, 2}, {1, 0, 0, 1, 1, 1, 0, 2, 0}, {1, 0, 0, 1, 1, 1, 2, 0, 0}, {1, 0, 0, 1, 1, 2, 0, 0, 1}, {1, 0, 0, 1, 1, 2, 1, 0, 0}, {1, 0, 0, 1, 2, 0, 1, 0, 1}, {1, 0, 0, 1, 2, 0, 1, 2, 2}, {1, 0, 0, 1, 2, 1, 1, 0, 0}, {1, 0, 0, 1, 2, 2, 1, 0, 2}, {1, 0, 0, 1, 2, 2, 1, 2, 0}, {1, 0, 0, 2, 0, 0, 1, 1, 1}, {1, 0, 0, 2, 1, 0, 0, 1, 1}, {1, 0, 0, 2, 1, 0, 1, 0, 1}, {1, 0, 0, 2, 1, 0, 2, 2, 1}, {1, 0, 0, 2, 1, 1, 0, 0, 1}, {1, 0, 0, 2, 1, 2, 0, 2, 1}, {1, 0, 0, 2, 1, 2, 2, 0, 1}, {1, 0, 1, 0, 0, 1, 0, 2, 1}, {1, 0, 1, 0, 1, 0, 0, 2, 1}, {1, 0, 1, 0, 1, 0, 1, 0, 2}, {1, 0, 1, 0, 1, 0, 1, 2, 0}, {1, 0, 1, 0, 1, 0, 2, 0, 1}, {1, 0, 1, 0, 1, 2, 0, 0, 1}, {1, 0, 1, 0, 1, 2, 1, 0, 0}, {1, 0, 1, 0, 2, 1, 0, 0, 1}, {1, 0, 1, 1, 0, 0, 1, 2, 0}, {1, 0, 1, 1, 2, 0, 1, 0, 0}, {1, 0, 1, 2, 1, 0, 0, 0, 1}, {1, 0, 1, 2, 1, 0, 1, 0, 0}, {1, 0, 2, 0, 1, 0, 0, 1, 1}, {1, 0, 2, 0, 1, 0, 1, 0, 1}, {1, 0, 2, 0, 1, 0, 2, 2, 1}, {1, 0, 2, 0, 1, 1, 0, 0, 1}, {1, 0, 2, 0, 1, 2, 0, 2, 1}, {1, 0, 2, 0, 1, 2, 2, 0, 1}, {1, 0, 2, 1, 0, 0, 1, 1, 0}, {1, 0, 2, 1, 0, 0, 1, 2, 2}, {1, 0, 2, 1, 0, 2, 1, 2, 0}, {1, 0, 2, 1, 1, 0, 0, 0, 1}, {1, 0, 2, 1, 1, 0, 1, 0, 0}, {1, 0, 2, 1, 2, 0, 1, 0, 2}, {1, 0, 2, 1, 2, 0, 1, 2, 0}, {1, 0, 2, 1, 2, 2, 1, 0, 0}, {1, 0, 2, 2, 1, 0, 0, 2, 1}, {1, 0, 2, 2, 1, 0, 2, 0, 1}, {1, 0, 2, 2, 1, 2, 0, 0, 1}, {1, 1, 0, 0, 1, 0, 0, 1, 2}, {1, 1, 0, 0, 1, 0, 0, 2, 1}, {1, 1, 0, 0, 1, 0, 2, 0, 1}, {1, 1, 0, 0, 1, 2, 0, 0, 1}, {1, 1, 0, 0, 1, 2, 0, 1, 0}, {1, 1, 0, 1, 0, 0, 1, 0, 2}, {1, 1, 0, 1, 0, 2, 1, 0, 0}, {1, 1, 0, 2, 1, 0, 0, 0, 1}, {1, 1, 1, 0, 0, 1, 0, 0, 2}, {1, 1, 1, 0, 0, 1, 0, 2, 0}, {1, 1, 1, 0, 0, 1, 2, 0, 0}, {1, 1, 1, 0, 0, 2, 0, 0, 1}, {1, 1, 1, 0, 0, 2, 0, 1, 0}, {1, 1, 1, 0, 0, 2, 0, 2, 2}, {1, 1, 1, 0, 0, 2, 1, 0, 0}, {1, 1, 1, 0, 0, 2, 2, 0, 2}, {1, 1, 1, 0, 0, 2, 2, 2, 0}, {1, 1, 1, 0, 1, 0, 0, 0, 2}, {1, 1, 1, 0, 1, 0, 0, 2, 0}, {1, 1, 1, 0, 1, 0, 2, 0, 0}, {1, 1, 1, 0, 2, 0, 0, 0, 1}, {1, 1, 1, 0, 2, 0, 0, 1, 0}, {1, 1, 1, 0, 2, 0, 0, 2, 2}, {1, 1, 1, 0, 2, 0, 1, 0, 0}, {1, 1, 1, 0, 2, 0, 2, 0, 2}, {1, 1, 1, 0, 2, 0, 2, 2, 0}, {1, 1, 1, 0, 2, 2, 0, 0, 2}, {1, 1, 1, 0, 2, 2, 0, 2, 0}, {1, 1, 1, 0, 2, 2, 2, 0, 0}, {1, 1, 1, 1, 0, 0, 0, 0, 2}, {1, 1, 1, 1, 0, 0, 0, 2, 0}, {1, 1, 1, 1, 0, 0, 2, 0, 0}, {1, 1, 1, 2, 0, 0, 0, 0, 1}, {1, 1, 1, 2, 0, 0, 0, 1, 0}, {1, 1, 1, 2, 0, 0, 0, 2, 2}, {1, 1, 1, 2, 0, 0, 1, 0, 0}, {1, 1, 1, 2, 0, 0, 2, 0, 2}, {1, 1, 1, 2, 0, 0, 2, 2, 0}, {1, 1, 1, 2, 0, 2, 0, 0, 2}, {1, 1, 1, 2, 0, 2, 0, 2, 0}, {1, 1, 1, 2, 0, 2, 2, 0, 0}, {1, 1, 1, 2, 2, 0, 0, 0, 2}, {1, 1, 1, 2, 2, 0, 0, 2, 0}, {1, 1, 1, 2, 2, 0, 2, 0, 0}, {1, 1, 2, 0, 1, 0, 0, 0, 1}, {1, 1, 2, 0, 1, 0, 0, 1, 0}, {1, 1, 2, 1, 0, 0, 1, 0, 0}, {1, 2, 0, 0, 1, 0, 0, 1, 1}, {1, 2, 0, 0, 1, 0, 1, 0, 1}, {1, 2, 0, 0, 1, 0, 2, 2, 1}, {1, 2, 0, 0, 1, 1, 0, 0, 1}, {1, 2, 0, 0, 1, 2, 0, 2, 1}, {1, 2, 0, 0, 1, 2, 2, 0, 1}, {1, 2, 0, 1, 0, 0, 1, 0, 1}, {1, 2, 0, 1, 0, 0, 1, 2, 2}, {1, 2, 0, 1, 0, 1, 1, 0, 0}, {1, 2, 0, 1, 0, 2, 1, 0, 2}, {1, 2, 0, 1, 0, 2, 1, 2, 0}, {1, 2, 0, 1, 1, 0, 0, 0, 1}, {1, 2, 0, 1, 2, 0, 1, 0, 2}, {1, 2, 0, 1, 2, 2, 1, 0, 0}, {1, 2, 0, 2, 1, 0, 0, 2, 1}, {1, 2, 0, 2, 1, 0, 2, 0, 1}, {1, 2, 0, 2, 1, 2, 0, 0, 1}, {1, 2, 1, 0, 0, 1, 0, 0, 1}, {1, 2, 1, 0, 1, 0, 0, 0, 1}, {1, 2, 1, 0, 1, 0, 1, 0, 0}, {1, 2, 1, 1, 0, 0, 1, 0, 0}, {1, 2, 2, 0, 1, 0, 0, 2, 1}, {1, 2, 2, 0, 1, 0, 2, 0, 1}, {1, 2, 2, 0, 1, 2, 0, 0, 1}, {1, 2, 2, 1, 0, 0, 1, 0, 2}, {1, 2, 2, 1, 0, 0, 1, 2, 0}, {1, 2, 2, 1, 0, 2, 1, 0, 0}, {1, 2, 2, 1, 2, 0, 1, 0, 0}, {1, 2, 2, 2, 1, 0, 0, 0, 1}, {2, 0, 0, 0, 0, 1, 1, 1, 1}, {2, 0, 0, 0, 1, 0, 1, 1, 1}, {2, 0, 0, 0, 2, 2, 1, 1, 1}, {2, 0, 0, 1, 0, 0, 1, 1, 1}, {2, 0, 0, 1, 1, 1, 0, 0, 1}, {2, 0, 0, 1, 1, 1, 0, 1, 0}, {2, 0, 0, 1, 1, 1, 0, 2, 2}, {2, 0, 0, 1, 1, 1, 1, 0, 0}, {2, 0, 0, 1, 1, 1, 2, 0, 2}, {2, 0, 0, 1, 1, 1, 2, 2, 0}, {2, 0, 0, 2, 0, 2, 1, 1, 1}, {2, 0, 0, 2, 2, 0, 1, 1, 1}, {2, 0, 1, 0, 0, 1, 0, 1, 1}, {2, 0, 1, 0, 0, 1, 2, 2, 1}, {2, 0, 1, 0, 1, 0, 1, 0, 1}, {2, 0, 1, 0, 1, 0, 1, 1, 0}, {2, 0, 1, 0, 1, 0, 1, 2, 2}, {2, 0, 1, 0, 1, 1, 0, 0, 1}, {2, 0, 1, 0, 1, 1, 1, 0, 0}, {2, 0, 1, 0, 1, 2, 1, 0, 2}, {2, 0, 1, 0, 1, 2, 1, 2, 0}, {2, 0, 1, 0, 2, 1, 0, 2, 1}, {2, 0, 1, 0, 2, 1, 2, 0, 1}, {2, 0, 1, 1, 1, 0, 1, 0, 0}, {2, 0, 1, 2, 0, 1, 0, 2, 1}, {2, 0, 1, 2, 1, 0, 1, 0, 2}, {2, 0, 1, 2, 1, 0, 1, 2, 0}, {2, 0, 1, 2, 1, 2, 1, 0, 0}, {2, 0, 1, 2, 2, 1, 0, 0, 1}, {2, 0, 2, 0, 0, 2, 1, 1, 1}, {2, 0, 2, 0, 2, 0, 1, 1, 1}, {2, 0, 2, 1, 1, 1, 0, 0, 2}, {2, 0, 2, 1, 1, 1, 0, 2, 0}, {2, 0, 2, 1, 1, 1, 2, 0, 0}, {2, 0, 2, 2, 0, 0, 1, 1, 1}, {2, 1, 0, 0, 1, 0, 0, 1, 1}, {2, 1, 0, 0, 1, 0, 2, 1, 2}, {2, 1, 0, 0, 1, 1, 0, 1, 0}, {2, 1, 0, 0, 1, 2, 0, 1, 2}, {2, 1, 0, 0, 1, 2, 2, 1, 0}, {2, 1, 0, 2, 1, 0, 0, 1, 2}, {2, 1, 0, 2, 1, 2, 0, 1, 0}, {2, 1, 1, 0, 0, 1, 0, 0, 1}, {2, 1, 1, 0, 1, 0, 0, 1, 0}, {2, 1, 1, 0, 1, 0, 1, 0, 0}, {2, 1, 2, 0, 1, 0, 0, 1, 2}, {2, 1, 2, 0, 1, 0, 2, 1, 0}, {2, 1, 2, 0, 1, 2, 0, 1, 0}, {2, 1, 2, 2, 1, 0, 0, 1, 0}, {2, 2, 0, 0, 0, 2, 1, 1, 1}, {2, 2, 0, 0, 2, 0, 1, 1, 1}, {2, 2, 0, 1, 1, 1, 0, 0, 2}, {2, 2, 0, 1, 1, 1, 0, 2, 0}, {2, 2, 0, 1, 1, 1, 2, 0, 0}, {2, 2, 0, 2, 0, 0, 1, 1, 1}, {2, 2, 1, 0, 0, 1, 0, 2, 1}, {2, 2, 1, 0, 0, 1, 2, 0, 1}, {2, 2, 1, 0, 1, 0, 1, 0, 2}, {2, 2, 1, 0, 1, 0, 1, 2, 0}, {2, 2, 1, 0, 1, 2, 1, 0, 0}, {2, 2, 1, 0, 2, 1, 0, 0, 1}, {2, 2, 1, 2, 0, 1, 0, 0, 1}, {2, 2, 1, 2, 1, 0, 1, 0, 0}, {0, 0, 1, 1, 0, 0, 0, 1, 1}, {0, 0, 1, 1, 1, 0, 0, 0, 1}, {0, 0, 1, 1, 1, 0, 0, 1, 0}, {0, 1, 0, 0, 0, 1, 1, 0, 1}, {0, 1, 0, 0, 1, 0, 1, 0, 1}, {0, 1, 0, 0, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 0, 0, 1, 0, 1}, {0, 1, 0, 1, 1, 0, 0, 0, 1}, {0, 1, 1, 1, 0, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 1, 1, 1, 0}, {1, 0, 0, 0, 1, 1, 0, 1, 0}, {1, 0, 0, 0, 1, 1, 1, 0, 0}, {1, 0, 1, 0, 0, 1, 0, 1, 0}, {1, 0, 1, 0, 1, 0, 0, 1, 0}, {1, 0, 1, 1, 0, 0, 0, 1, 0}, {1, 1, 0, 0, 0, 1, 1, 0, 0} }; private static double weights[] = { -0.00000000000000063401, 0.00000000000000055700, 0.00000000000000012769, -0.52573653474162341000, 0.43427498705107342000, 0.09146154769055023200, 0.00000000000000138130, -0.00000000000000118053, -0.00000000000000050631, 0.52573653474162607000, -0.43427498705107603000, -0.09146154769055094000, -0.00000000000000057743, 0.00000000000000037314, -0.00000000000000023441, 0.52573653474162907000, -0.43427498705107787000, -0.09146154769055155100, -0.00000000000000405476, 0.00000000000000339568, 0.00000000000000053496, -0.52573653474162763000, 0.43427498705107587000, 0.09146154769055155100, -0.00000000000000116499, 0.00000000000000111960, 0.00000000000000004464, 0.59181480684449950000, -0.48617039139374285000, -0.10564441545075645000, 0.33659693927260309000, -0.28023189914604213000, -0.05636504012656110000, -0.00000000000000339401, 0.00000000000000312093, 0.00000000000000057542, 0.33659693927260292000, -0.28023189914604213000, -0.05636504012656087800, 0.00000000000000099480, -0.00000000000000067295, -0.00000000000000003901, -0.33659693927260537000, 0.28023189914604435000, 0.05636504012656118300, -0.00000000000000284785, 0.00000000000000269180, 0.00000000000000026089, -0.33659693927260426000, 0.28023189914604330000, 0.05636504012656121800, -0.59181480684449039000, 0.48617039139373414000, 0.10564441545075609000, 0.00000000000000098567, -0.00000000000000095474, -0.00000000000000021207, -0.33659693927260698000, 0.28023189914604579000, 0.05636504012656142600, -0.59181480684449372000, 0.48617039139373774000, 0.10564441545075645000, 0.33659693927260514000, -0.28023189914604435000, -0.05636504012656100300, -0.00000000000000010012, 0.00000000000000001702, 0.00000000000000012437, -0.33659693927260204000, 0.28023189914604152000, 0.05636504012656010100, 0.59181480684449428000, -0.48617039139373813000, -0.10564441545075638000, 0.33659693927260081000, -0.28023189914603991000, -0.05636504012656074600, 0.00000000000000216976, -0.00000000000000195478, -0.00000000000000023527, 0.39961448116107012000, -0.35734834346184241000, -0.04226613769922773400, -0.33634249144114892000, 0.28239332896420155000, 0.05394916247694748300, 0.39961448116106396000, -0.35734834346183769000, -0.04226613769922723400, -0.33634249144114703000, 0.28239332896420027000, 0.05394916247694724100, -0.21667948075941171000, 0.12935693076722185000, 0.08732254999219028800, -0.33634249144114398000, 0.28239332896419722000, 0.05394916247694688700, 0.39961448116106157000, -0.35734834346183453000, -0.04226613769922710200, -0.33634249144114919000, 0.28239332896420105000, 0.05394916247694810100, 0.39961448116107307000, -0.35734834346184485000, -0.04226613769922824700, -0.54188833749531484000, 0.49456532031183192000, 0.04732301718348254400, 0.00000000000000042643, -0.00000000000000052416, -0.00000000000000028161, 0.54188833749532672000, -0.49456532031184147000, -0.04732301718348516700, 0.00000000000000208148, -0.00000000000000170526, -0.00000000000000039120, -0.00000000000001165642, 0.00000000000000998830, 0.00000000000000133016, -0.00000000000000389738, 0.00000000000000286692, 0.00000000000000081238, 0.54188833749532805000, -0.49456532031184208000, -0.04732301718348581200, -0.00000000000000308117, 0.00000000000000212213, 0.00000000000000117840, -0.54188833749532439000, 0.49456532031183975000, 0.04732301718348420900, 0.20000000000000001000, 0.20000000000000001000, 0.20000000000000001000, 0.20000000000000001000, 0.20000000000000001000, 0.20000000000000001000, 0.20000000000000001000, 0.20000000000000001000, 0.20000000000000001000, 0.20000000000000001000, 0.20000000000000001000, 0.20000000000000001000, 0.20000000000000001000, 0.20000000000000001000, 0.20000000000000001000, 0.33333333333333331000, 0.33333333333333331000, 0.33333333333333331000, 0.00000000000000093850, -0.00000000000000054323, -0.00000000000000011761, -0.03290466729806285100, 0.00000000000000063771, 0.00000000000000000000, 0.00000000000000000000, 0.00000000000000000000, 0.00000000000000000000}; // ********************************************************************** // MAIN // ********************************************************************** public static void main(String[] args) throws Exception { double xData[][]; // Input Attributes for Trainer int yData[]; // Output Attributes for Trainer int i, j; // array indicies String trainLogName = "BinaryClassificationNetworkEx2.log"; int[][] z; // ****************************************************************** // PREPROCESS TRAINING PATTERNS // ****************************************************************** long t0 = System.currentTimeMillis(); xData = new double[nObs][nInputs]; yData = new int[nObs]; /* Perform Binary Filtering. */ for (i = 0; i < data.length; i++) { for (j = 0; j < data[0].length; j++) { data[i][j]++; } } int xx[] = new int[nObs]; UnsupervisedNominalFilter filter = new UnsupervisedNominalFilter(3); for (i = 0; i < 9; i++) { // Copy each variable to a temp var for (j = 0; j < nObs; j++) { xx[j] = data[j][i]; } // Perform binary filter on temp var z = filter.encode(xx); // Copy binary encoded var to xData for (j = 0; j < nObs; j++) { for (int k = 0; k < 3; k++) { xData[j][k + (i * 3)] = (double) z[j][k]; } } } for (i = 0; i < nObs; i++) { yData[i] = (i >= 626 ? 0 : 1); } // ****************************************************************** // CREATE FEEDFORWARD NETWORK // ****************************************************************** FeedForwardNetwork network = new FeedForwardNetwork(); network.getInputLayer().createInputs(nInputs); network.createHiddenLayer().createPerceptrons(nPerceptrons1); network.createHiddenLayer().createPerceptrons(nPerceptrons2); network.getOutputLayer().createPerceptrons(nOutputs); network.linkAll(); network.setWeights(weights); Perceptron perceptrons[] = network.getPerceptrons(); for (i = 0; i < perceptrons.length - 1; i++) { perceptrons[i].setActivation(hiddenLayerActivation); } // ****************************************************************** // SET OUTPUT LAYER ACTIVATION FUNCTION TO LOGISTIC // FOR BINARY CLASSIFICATION // ****************************************************************** perceptrons[perceptrons.length - 1]. setActivation(outputLayerActivation); BinaryClassification classification = new BinaryClassification(network); QuasiNewtonTrainer stageITrainer = new QuasiNewtonTrainer(); QuasiNewtonTrainer stageIITrainer = new QuasiNewtonTrainer(); stageITrainer.setError(classification.getError()); stageIITrainer.setError(classification.getError()); stageITrainer.setMaximumTrainingIterations(8000); stageITrainer.setMaximumStepsize(10.0); stageIITrainer.setMaximumStepsize(10.0); stageITrainer.setRelativeTolerance(10e-20); stageIITrainer.setRelativeTolerance(10e-20); stageIITrainer.setMaximumTrainingIterations(8000); EpochTrainer trainer = new EpochTrainer(stageITrainer, stageIITrainer); // Set Training Parameters trainer.setNumberOfEpochs(20); trainer.setEpochSize(nObs); // Set random number seeds to produce repeatable output trainer.setRandom(new Random(5555)); trainer.setRandomSamples(new Random(5555), new Random(5555)); // If tracing is requested setup training logger if (trace) { try { Handler handler = new FileHandler(trainLogName); Logger logger = Logger.getLogger("com.imsl.datamining.neural"); logger.setLevel(Level.FINEST); logger.addHandler(handler); handler.setFormatter(QuasiNewtonTrainer.getFormatter()); System.out.println("--> Training Log Created in " + trainLogName); } catch (Exception e) { System.out.println("--> Cannot Create Training Log."); } } classification.train(trainer, xData, yData); System.out.println("trainer.getErrorValue = " + trainer.getErrorValue()); System.out.println("StageITrainer.getErrorValue = " + stageITrainer.getErrorValue()); System.out.println("StageIITrainer.getErrorValue = " + stageIITrainer.getErrorValue()); // ****************************************************************** // DISPLAY TRAINING STATISTICS // ****************************************************************** double stats[] = classification.computeStatistics(xData, yData); System.out.println("***********************************************"); System.out.println("--> Cross-entropy error: " + (float) stats[0]); System.out.println("--> Classification error rate: " + (float) stats[1]); System.out.println("***********************************************"); System.out.println(""); // ****************************************************************** // OBTAIN AND DISPLAY NETWORK WEIGHTS AND GRADIENTS // ****************************************************************** double weight[] = network.getWeights(); double gradient[] = trainer.getErrorGradient(); double wg[][] = new double[weight.length][2]; for (i = 0; i < weight.length; i++) { wg[i][0] = weight[i]; wg[i][1] = gradient[i]; } PrintMatrixFormat pmf = new PrintMatrixFormat(); pmf.setNumberFormat(new java.text.DecimalFormat("0.000000")); pmf.setColumnLabels(new String[]{"Weights", "Gradients"}); new PrintMatrix().print(pmf, wg); // ****************************************************************** // forecast the network // ****************************************************************** double report[][] = new double[nObs][2]; for (i = 0; i < 50; i++) { report[i][0] = yData[i]; report[i][1] = classification.predictedClass(xData[i]); } pmf = new PrintMatrixFormat(); pmf.setColumnLabels(new String[]{"Expected", "Predicted"}); new PrintMatrix("Forecast").print(pmf, report); long t1 = System.currentTimeMillis(); double time = t1 - t0; time = time / 1000; System.out.println("****************Time: " + time); System.out.println("trainer.getErrorValue = " + trainer.getErrorValue()); System.out.println("StageITrainer.getErrorValue = " + stageITrainer.getErrorValue()); System.out.println("StageIITrainer.getErrorValue = " + stageIITrainer.getErrorValue()); } }
--> Training Log Created in BinaryClassificationNetworkEx2.log trainer.getErrorValue = 1.4521421559936876 StageITrainer.getErrorValue = 482.27809835973795 StageIITrainer.getErrorValue = 1.4521421559936876 *********************************************** --> Cross-entropy error: 1.4521421 --> Classification error rate: 0.0020876827 *********************************************** Weights Gradients 0 2.794812 -0.000037 1 11.881356 -0.000066 2 -11.053385 0.002202 3 19.260234 0.359990 4 28.373581 -0.000341 5 -13.253239 -0.027393 6 -7.082690 0.015784 7 13.221642 0.003962 8 -23.283604 -1.405288 9 -30.615046 -0.000000 10 11.737416 0.000001 11 3.299586 -0.000000 12 -10.950633 0.000203 13 2.016166 -0.000140 14 -20.363654 -0.000000 15 -8.838920 -0.027421 16 -12.499779 0.000510 17 -6.608869 0.006352 18 17.696999 -1.106129 19 28.843672 -0.000341 20 8.045185 -0.000000 21 10.177528 0.000000 22 -0.954535 0.000000 23 -23.413666 -0.000000 24 -39.003675 0.000000 25 3.247172 -0.000008 26 9.765645 0.015208 27 0.018801 0.000015 28 4.576900 0.060691 29 -12.150770 0.000000 30 -11.276935 -0.000000 31 18.142833 0.015712 32 -4.480160 0.001997 33 21.404600 -1.312999 34 -43.192160 -0.000379 35 12.501761 -0.027452 36 -14.572506 0.000006 37 -13.945651 0.004352 38 -25.733512 0.267603 39 30.022170 0.000038 40 0.869418 0.000023 41 4.846458 -0.000000 42 7.585565 0.000018 43 3.099542 -0.000042 44 -9.807495 -0.000000 45 -18.722817 -0.000026 46 7.144900 0.015791 47 -10.414587 0.003950 48 18.917071 -2.248996 49 1.892356 0.000000 50 12.926283 -0.027369 51 -2.409669 -0.000072 52 5.131728 0.002344 53 -23.509053 1.200103 54 -11.747324 -0.000341 55 6.533518 -0.000034 56 3.184332 0.000000 57 -4.375824 0.000073 58 2.806478 0.003455 59 -12.541122 0.000000 60 28.572629 -0.027369 61 58.397173 -0.000000 62 -1.683803 0.004585 63 21.994267 0.417573 64 -8.148093 -0.000000 65 -28.281093 -0.000060 66 -42.698239 0.015791 67 -5.212427 0.001782 68 -24.822189 -1.463011 69 3.390353 -0.000341 70 1.738623 -0.000000 71 -6.313312 -0.000072 72 -1.223654 0.000000 73 0.774095 -0.000000 74 -18.669978 -0.000000 75 -26.851295 -0.027369 76 -12.628134 0.015201 77 -6.891812 0.002198 78 20.327156 1.260888 79 -24.811981 -0.000341 80 21.850027 -0.000022 81 -0.353371 0.000511 82 4.425916 0.004020 83 -23.040663 -2.306232 84 5.876584 0.000000 85 8.143971 -0.000038 86 21.663435 0.000007 87 -6.285839 0.000148 88 -0.355297 -0.000094 89 -4.267329 -0.000000 90 -7.707898 -0.027393 91 10.756301 0.000583 92 -42.148634 -0.000000 93 19.135975 -0.673146 94 10.182175 0.000000 95 4.003089 -0.000036 96 -22.043461 -0.000066 97 33.052701 0.006367 98 -23.321219 -0.429493 99 8.738982 -0.000341 100 5.451673 -0.000000 101 20.219032 0.015201 102 0.676898 -0.000000 103 2.691869 0.057201 104 -41.170953 0.000000 105 -8.584660 -0.000036 106 1.630423 0.000006 107 -3.854815 0.006352 108 16.548650 -0.579643 109 45.844790 -0.000379 110 2.217830 -0.027393 111 4.890955 0.000583 112 2.642988 0.000015 113 -23.801442 -0.526478 114 -38.698959 0.000000 115 8.331494 -0.000000 116 1.005177 0.015129 117 -8.016478 0.000000 118 5.529196 0.060684 119 -28.818014 0.000038 120 3.604061 -0.027419 121 4.143800 0.000511 122 -10.174349 0.003961 123 20.432096 -1.465940 124 -3.479734 0.000038 125 -5.448064 0.000023 126 -3.779805 0.015201 127 10.354714 0.002390 128 -23.042045 0.420524 129 -8.400539 -0.000379 130 2.973240 -0.000034 131 8.433972 0.000007 132 -11.045431 0.000016 133 1.312826 -0.000023 134 -10.385525 -0.000000 135 -54.999564 -0.019621 136 5.476551 -0.000000 137 -7.417770 0.000000 138 42.092030 -0.018658 139 13.732960 -0.000000 140 23.967486 0.000000 141 -21.369439 -0.031979 142 3.040890 0.000000 143 -3.357516 -0.000000 144 97.218390 -0.039325 145 4.920216 0.000000 146 34.621998 -0.000012 147 62.555082 -0.907987 148 3.421771 0.000000 149 4.222951 -0.006693 150 183.127735 -0.011089 151 -48.952878 -0.020804 152 13.720097 -0.020303 153 1.395545 -0.027429 154 8.430987 0.015718 155 -9.235164 0.006367 156 -2.045833 -1.045438 157 -22.715138 -0.000341 158 -62.659356 -0.949897 159 13.949309 0.000000 160 -0.675295 -0.006693 161 -60.351363 -0.020804 Forecast Expected Predicted 0 1 1 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 1 1 24 1 1 25 1 1 26 1 1 27 1 1 28 1 1 29 1 1 30 1 1 31 1 1 32 1 1 33 1 1 34 1 1 35 1 1 36 1 1 37 1 1 38 1 1 39 1 1 40 1 1 41 1 1 42 1 1 43 1 1 44 1 1 45 1 1 46 1 1 47 1 1 48 1 1 49 1 1 50 0 0 51 0 0 52 0 0 53 0 0 54 0 0 55 0 0 56 0 0 57 0 0 58 0 0 59 0 0 60 0 0 61 0 0 62 0 0 63 0 0 64 0 0 65 0 0 66 0 0 67 0 0 68 0 0 69 0 0 70 0 0 71 0 0 72 0 0 73 0 0 74 0 0 75 0 0 76 0 0 77 0 0 78 0 0 79 0 0 80 0 0 81 0 0 82 0 0 83 0 0 84 0 0 85 0 0 86 0 0 87 0 0 88 0 0 89 0 0 90 0 0 91 0 0 92 0 0 93 0 0 94 0 0 95 0 0 96 0 0 97 0 0 98 0 0 99 0 0 100 0 0 101 0 0 102 0 0 103 0 0 104 0 0 105 0 0 106 0 0 107 0 0 108 0 0 109 0 0 110 0 0 111 0 0 112 0 0 113 0 0 114 0 0 115 0 0 116 0 0 117 0 0 118 0 0 119 0 0 120 0 0 121 0 0 122 0 0 123 0 0 124 0 0 125 0 0 126 0 0 127 0 0 128 0 0 129 0 0 130 0 0 131 0 0 132 0 0 133 0 0 134 0 0 135 0 0 136 0 0 137 0 0 138 0 0 139 0 0 140 0 0 141 0 0 142 0 0 143 0 0 144 0 0 145 0 0 146 0 0 147 0 0 148 0 0 149 0 0 150 0 0 151 0 0 152 0 0 153 0 0 154 0 0 155 0 0 156 0 0 157 0 0 158 0 0 159 0 0 160 0 0 161 0 0 162 0 0 163 0 0 164 0 0 165 0 0 166 0 0 167 0 0 168 0 0 169 0 0 170 0 0 171 0 0 172 0 0 173 0 0 174 0 0 175 0 0 176 0 0 177 0 0 178 0 0 179 0 0 180 0 0 181 0 0 182 0 0 183 0 0 184 0 0 185 0 0 186 0 0 187 0 0 188 0 0 189 0 0 190 0 0 191 0 0 192 0 0 193 0 0 194 0 0 195 0 0 196 0 0 197 0 0 198 0 0 199 0 0 200 0 0 201 0 0 202 0 0 203 0 0 204 0 0 205 0 0 206 0 0 207 0 0 208 0 0 209 0 0 210 0 0 211 0 0 212 0 0 213 0 0 214 0 0 215 0 0 216 0 0 217 0 0 218 0 0 219 0 0 220 0 0 221 0 0 222 0 0 223 0 0 224 0 0 225 0 0 226 0 0 227 0 0 228 0 0 229 0 0 230 0 0 231 0 0 232 0 0 233 0 0 234 0 0 235 0 0 236 0 0 237 0 0 238 0 0 239 0 0 240 0 0 241 0 0 242 0 0 243 0 0 244 0 0 245 0 0 246 0 0 247 0 0 248 0 0 249 0 0 250 0 0 251 0 0 252 0 0 253 0 0 254 0 0 255 0 0 256 0 0 257 0 0 258 0 0 259 0 0 260 0 0 261 0 0 262 0 0 263 0 0 264 0 0 265 0 0 266 0 0 267 0 0 268 0 0 269 0 0 270 0 0 271 0 0 272 0 0 273 0 0 274 0 0 275 0 0 276 0 0 277 0 0 278 0 0 279 0 0 280 0 0 281 0 0 282 0 0 283 0 0 284 0 0 285 0 0 286 0 0 287 0 0 288 0 0 289 0 0 290 0 0 291 0 0 292 0 0 293 0 0 294 0 0 295 0 0 296 0 0 297 0 0 298 0 0 299 0 0 300 0 0 301 0 0 302 0 0 303 0 0 304 0 0 305 0 0 306 0 0 307 0 0 308 0 0 309 0 0 310 0 0 311 0 0 312 0 0 313 0 0 314 0 0 315 0 0 316 0 0 317 0 0 318 0 0 319 0 0 320 0 0 321 0 0 322 0 0 323 0 0 324 0 0 325 0 0 326 0 0 327 0 0 328 0 0 329 0 0 330 0 0 331 0 0 332 0 0 333 0 0 334 0 0 335 0 0 336 0 0 337 0 0 338 0 0 339 0 0 340 0 0 341 0 0 342 0 0 343 0 0 344 0 0 345 0 0 346 0 0 347 0 0 348 0 0 349 0 0 350 0 0 351 0 0 352 0 0 353 0 0 354 0 0 355 0 0 356 0 0 357 0 0 358 0 0 359 0 0 360 0 0 361 0 0 362 0 0 363 0 0 364 0 0 365 0 0 366 0 0 367 0 0 368 0 0 369 0 0 370 0 0 371 0 0 372 0 0 373 0 0 374 0 0 375 0 0 376 0 0 377 0 0 378 0 0 379 0 0 380 0 0 381 0 0 382 0 0 383 0 0 384 0 0 385 0 0 386 0 0 387 0 0 388 0 0 389 0 0 390 0 0 391 0 0 392 0 0 393 0 0 394 0 0 395 0 0 396 0 0 397 0 0 398 0 0 399 0 0 400 0 0 401 0 0 402 0 0 403 0 0 404 0 0 405 0 0 406 0 0 407 0 0 408 0 0 409 0 0 410 0 0 411 0 0 412 0 0 413 0 0 414 0 0 415 0 0 416 0 0 417 0 0 418 0 0 419 0 0 420 0 0 421 0 0 422 0 0 423 0 0 424 0 0 425 0 0 426 0 0 427 0 0 428 0 0 429 0 0 430 0 0 431 0 0 432 0 0 433 0 0 434 0 0 435 0 0 436 0 0 437 0 0 438 0 0 439 0 0 440 0 0 441 0 0 442 0 0 443 0 0 444 0 0 445 0 0 446 0 0 447 0 0 448 0 0 449 0 0 450 0 0 451 0 0 452 0 0 453 0 0 454 0 0 455 0 0 456 0 0 457 0 0 458 0 0 459 0 0 460 0 0 461 0 0 462 0 0 463 0 0 464 0 0 465 0 0 466 0 0 467 0 0 468 0 0 469 0 0 470 0 0 471 0 0 472 0 0 473 0 0 474 0 0 475 0 0 476 0 0 477 0 0 478 0 0 479 0 0 480 0 0 481 0 0 482 0 0 483 0 0 484 0 0 485 0 0 486 0 0 487 0 0 488 0 0 489 0 0 490 0 0 491 0 0 492 0 0 493 0 0 494 0 0 495 0 0 496 0 0 497 0 0 498 0 0 499 0 0 500 0 0 501 0 0 502 0 0 503 0 0 504 0 0 505 0 0 506 0 0 507 0 0 508 0 0 509 0 0 510 0 0 511 0 0 512 0 0 513 0 0 514 0 0 515 0 0 516 0 0 517 0 0 518 0 0 519 0 0 520 0 0 521 0 0 522 0 0 523 0 0 524 0 0 525 0 0 526 0 0 527 0 0 528 0 0 529 0 0 530 0 0 531 0 0 532 0 0 533 0 0 534 0 0 535 0 0 536 0 0 537 0 0 538 0 0 539 0 0 540 0 0 541 0 0 542 0 0 543 0 0 544 0 0 545 0 0 546 0 0 547 0 0 548 0 0 549 0 0 550 0 0 551 0 0 552 0 0 553 0 0 554 0 0 555 0 0 556 0 0 557 0 0 558 0 0 559 0 0 560 0 0 561 0 0 562 0 0 563 0 0 564 0 0 565 0 0 566 0 0 567 0 0 568 0 0 569 0 0 570 0 0 571 0 0 572 0 0 573 0 0 574 0 0 575 0 0 576 0 0 577 0 0 578 0 0 579 0 0 580 0 0 581 0 0 582 0 0 583 0 0 584 0 0 585 0 0 586 0 0 587 0 0 588 0 0 589 0 0 590 0 0 591 0 0 592 0 0 593 0 0 594 0 0 595 0 0 596 0 0 597 0 0 598 0 0 599 0 0 600 0 0 601 0 0 602 0 0 603 0 0 604 0 0 605 0 0 606 0 0 607 0 0 608 0 0 609 0 0 610 0 0 611 0 0 612 0 0 613 0 0 614 0 0 615 0 0 616 0 0 617 0 0 618 0 0 619 0 0 620 0 0 621 0 0 622 0 0 623 0 0 624 0 0 625 0 0 626 0 0 627 0 0 628 0 0 629 0 0 630 0 0 631 0 0 632 0 0 633 0 0 634 0 0 635 0 0 636 0 0 637 0 0 638 0 0 639 0 0 640 0 0 641 0 0 642 0 0 643 0 0 644 0 0 645 0 0 646 0 0 647 0 0 648 0 0 649 0 0 650 0 0 651 0 0 652 0 0 653 0 0 654 0 0 655 0 0 656 0 0 657 0 0 658 0 0 659 0 0 660 0 0 661 0 0 662 0 0 663 0 0 664 0 0 665 0 0 666 0 0 667 0 0 668 0 0 669 0 0 670 0 0 671 0 0 672 0 0 673 0 0 674 0 0 675 0 0 676 0 0 677 0 0 678 0 0 679 0 0 680 0 0 681 0 0 682 0 0 683 0 0 684 0 0 685 0 0 686 0 0 687 0 0 688 0 0 689 0 0 690 0 0 691 0 0 692 0 0 693 0 0 694 0 0 695 0 0 696 0 0 697 0 0 698 0 0 699 0 0 700 0 0 701 0 0 702 0 0 703 0 0 704 0 0 705 0 0 706 0 0 707 0 0 708 0 0 709 0 0 710 0 0 711 0 0 712 0 0 713 0 0 714 0 0 715 0 0 716 0 0 717 0 0 718 0 0 719 0 0 720 0 0 721 0 0 722 0 0 723 0 0 724 0 0 725 0 0 726 0 0 727 0 0 728 0 0 729 0 0 730 0 0 731 0 0 732 0 0 733 0 0 734 0 0 735 0 0 736 0 0 737 0 0 738 0 0 739 0 0 740 0 0 741 0 0 742 0 0 743 0 0 744 0 0 745 0 0 746 0 0 747 0 0 748 0 0 749 0 0 750 0 0 751 0 0 752 0 0 753 0 0 754 0 0 755 0 0 756 0 0 757 0 0 758 0 0 759 0 0 760 0 0 761 0 0 762 0 0 763 0 0 764 0 0 765 0 0 766 0 0 767 0 0 768 0 0 769 0 0 770 0 0 771 0 0 772 0 0 773 0 0 774 0 0 775 0 0 776 0 0 777 0 0 778 0 0 779 0 0 780 0 0 781 0 0 782 0 0 783 0 0 784 0 0 785 0 0 786 0 0 787 0 0 788 0 0 789 0 0 790 0 0 791 0 0 792 0 0 793 0 0 794 0 0 795 0 0 796 0 0 797 0 0 798 0 0 799 0 0 800 0 0 801 0 0 802 0 0 803 0 0 804 0 0 805 0 0 806 0 0 807 0 0 808 0 0 809 0 0 810 0 0 811 0 0 812 0 0 813 0 0 814 0 0 815 0 0 816 0 0 817 0 0 818 0 0 819 0 0 820 0 0 821 0 0 822 0 0 823 0 0 824 0 0 825 0 0 826 0 0 827 0 0 828 0 0 829 0 0 830 0 0 831 0 0 832 0 0 833 0 0 834 0 0 835 0 0 836 0 0 837 0 0 838 0 0 839 0 0 840 0 0 841 0 0 842 0 0 843 0 0 844 0 0 845 0 0 846 0 0 847 0 0 848 0 0 849 0 0 850 0 0 851 0 0 852 0 0 853 0 0 854 0 0 855 0 0 856 0 0 857 0 0 858 0 0 859 0 0 860 0 0 861 0 0 862 0 0 863 0 0 864 0 0 865 0 0 866 0 0 867 0 0 868 0 0 869 0 0 870 0 0 871 0 0 872 0 0 873 0 0 874 0 0 875 0 0 876 0 0 877 0 0 878 0 0 879 0 0 880 0 0 881 0 0 882 0 0 883 0 0 884 0 0 885 0 0 886 0 0 887 0 0 888 0 0 889 0 0 890 0 0 891 0 0 892 0 0 893 0 0 894 0 0 895 0 0 896 0 0 897 0 0 898 0 0 899 0 0 900 0 0 901 0 0 902 0 0 903 0 0 904 0 0 905 0 0 906 0 0 907 0 0 908 0 0 909 0 0 910 0 0 911 0 0 912 0 0 913 0 0 914 0 0 915 0 0 916 0 0 917 0 0 918 0 0 919 0 0 920 0 0 921 0 0 922 0 0 923 0 0 924 0 0 925 0 0 926 0 0 927 0 0 928 0 0 929 0 0 930 0 0 931 0 0 932 0 0 933 0 0 934 0 0 935 0 0 936 0 0 937 0 0 938 0 0 939 0 0 940 0 0 941 0 0 942 0 0 943 0 0 944 0 0 945 0 0 946 0 0 947 0 0 948 0 0 949 0 0 950 0 0 951 0 0 952 0 0 953 0 0 954 0 0 955 0 0 956 0 0 957 0 0 ****************Time: 2.777 trainer.getErrorValue = 1.4521421559936876 StageITrainer.getErrorValue = 482.27809835973795 StageIITrainer.getErrorValue = 1.4521421559936876Link to Java source.