public void trainAll(ListDataSet dataSet) { reset(); classCount = getClassCount(dataSet); for (int i = 0; i < classCount; i++) { System.out.println("Training class " + i); Classifier c = singleClassClassifier.emptyCopy(); singleClassClassifiers.add(c); Matrix input = dataSet.getInputMatrix(); Matrix target = dataSet.getTargetMatrix().selectColumns(Ret.LINK, i); if (twoColumns) { Matrix target2 = target.minus(1).abs(Ret.NEW); target = Matrix.Factory.horCat(target, target2); } ListDataSet ds = DataSet.Factory.linkToInputAndTarget(input, target); c.trainAll(ds); } }
public void trainAll(ListDataSet dataSet) { Matrix dataSetInput = dataSet.getInputMatrix(); Matrix max = dataSetInput.max(Ret.NEW, Matrix.ROW); cumSum = new ArrayList<Integer>((int) max.getColumnCount()); int sum = 0; cumSum.add(sum); for (int i = (int) max.getColumnCount() - 1; i != -1; i--) { sum += max.getAsInt(0, i) + 1; cumSum.add(sum); } LabelAlphabet inputAlphabet = new LabelAlphabet(); int featureCount = getFeatureCount(dataSet); for (int i = 0; i < featureCount; i++) { // iterate from 1 to max (inclusive!) for (int fv = 1; fv < max.getAsDouble(0, i) + 1; fv++) { inputAlphabet.lookupIndex("Feature" + i + "=" + fv, true); } } LabelAlphabet targetAlphabet = new LabelAlphabet(); for (int i = 0; i < dataSet.getTargetMatrix().getColumnCount(); i++) { targetAlphabet.lookupIndex("Class" + i, true); } InstanceList trainingSet = new DataSet2InstanceList(dataSet, inputAlphabet, targetAlphabet, cumSum); classifier = trainer.train(trainingSet); }
Matrix valueCounts = dataSet.getInputMatrix().max(Ret.NEW, Matrix.ROW).plus(1); for (int j = 0; j < dataSet.getInputMatrix().getColumnCount(); j++) { weka.core.Attribute a = null; if (discrete) {
@Test public void testMLP() throws Exception { ListDataSet iris = ListDataSet.Factory.IRIS(); iris.getInputMatrix().standardize(Ret.ORIG, Matrix.ROW); MultiLayerNetwork mlp = new MultiLayerNetwork(10); mlp.setLearningRate(0.05); for (int i = 0; i < 300; i++) { mlp.trainOnce(iris); } mlp.predictAll(iris); assertEquals(0.90, iris.getAccuracy(), 0.2); } }