Search code examples
time-serieswekatimeserieschart

WekaForecaster Graph Access


Is it possible to access the graphs produced by WekaForecaster API as visible in Weka Explorer. I see that the API per se does not have any function access. Thanks!


Solution

  • I figured out the answer.

    1. Create a TSEvaluation object
    2. Call evaluateForecaster(TSForecaster forecaster, boolean buildModel, java.io.PrintStream... progress)
    3. Call graphFutureForecastOnTesting(GraphDriver driver, TSForecaster forecaster, java.util.List targetNames) which returns a JPanel

    For example-

    // Your instances
    Instances train;
    // Your WekaForecaster
    WekaForecaster forecaster;
    ...
    // Custom hold out set size
    int holdOutSetSize = 1;
    
    // Init evaluator
    TSEvaluation eval = new TSEvaluation(train, holdOutSetSize);
    
    boolean buildModel = false;
    
    // Evaluate the forecaster
    eval.evaluateForecaster(forecaster, buildModel, System.out);
    
    // Get graph in JPanel after evaluation on training with custom hold out set size
    JPanel trainGraph = eval.graphFutureForecastOnTraining(GraphDriver.getDefaultDriver(), 
                      forecaster, AbstractForecaster.
                      stringToList(forecaster.getFieldsToForecast()));
    

    Cheers!

    References: http://weka.sourceforge.net/doc.packages/timeseriesForecasting/weka/classifiers/timeseries/eval/TSEvaluation.html