%maven nz.ac.waikato.cms.moa:moa:2018.6.0 import moa.classifiers.trees.HoeffdingTree; import moa.streams.generators.RandomRBFGenerator; HoeffdingTree learner = new HoeffdingTree(); RandomRBFGenerator stream = new RandomRBFGenerator(); stream.prepareForUse(); learner.setModelContext(stream.getHeader()); learner.prepareForUse(); %maven org.knowm.xchart:xchart:3.5.2 import org.knowm.xchart.*; import moa.core.TimingUtils; import com.yahoo.labs.samoa.instances.Instance; int numInstances = 1000000; int sampleSize = 1000; boolean isTesting = true; double[] xData = new double[numInstances/sampleSize]; double[] yData = new double[numInstances/sampleSize]; int numberSamplesCorrect = 0; int numberSamples = 0; boolean preciseCPUTiming = TimingUtils.enablePreciseTiming(); long evaluateStartTime = TimingUtils.getNanoCPUTimeOfCurrentThread(); while (stream.hasMoreInstances() && numberSamples < numInstances) { Instance trainInst = stream.nextInstance().getData(); if (isTesting) { if (learner.correctlyClassifies(trainInst)){ numberSamplesCorrect++; } } if (numberSamples % sampleSize == 0){ xData[numberSamples / sampleSize] = numberSamples / sampleSize; yData[numberSamples / sampleSize] = 100.0 * (double) numberSamplesCorrect/ (double) numberSamples; } numberSamples++; learner.trainOnInstance(trainInst); } double accuracy = 100.0 * (double) numberSamplesCorrect/ (double) numberSamples; double time = TimingUtils.nanoTimeToSeconds(TimingUtils.getNanoCPUTimeOfCurrentThread()- evaluateStartTime); System.out.println(numberSamples + " instances processed with " + accuracy + "% accuracy in "+time+" seconds."); XYChart chart = QuickChart.getChart("Prequential Evaluation", "#Instances", "Accuracy", "y(x)", xData, yData); BitmapEncoder.getBufferedImage(chart); import moa.DoTask; DoTask.main("EvaluatePrequential -l trees.HoeffdingTree -i 1000000".split(" "));