Weka Gui and Java Code Results Difference with using Forecast
I try to make time series analysis in my project. I am trying to run WEKA
using API's and I have found out that the results from the WEKA Gui does
not match to my Java code.
I am trying to run a MLPREgression function for Time Series Analysis. I
use the same attributes and set them in my Java code as I used in the Weka
Gui.
Here is my code :
WekaForecaster forecaster = new WekaForecaster();
forecaster.setFieldsToForecast("islemSayisi");
forecaster.setBaseForecaster(new MLPRegressor());
forecaster.getTSLagMaker().setTimeStampField("timestamps");
forecaster.getTSLagMaker().setPeriodicity(Periodicity.DAILY);
forecaster.getTSLagMaker().setAddDayOfWeek(true);
forecaster.getTSLagMaker().setAddWeekendIndicator(true);
forecaster.buildForecaster(data, System.out);
forecaster.primeForecaster(data);
int numberOfDay = 30;
System.out.println("Algorithm:" + forecaster.getAlgorithmName());
System.out.println("Confidence Level:"+
forecaster.getConfidenceLevel());
String []options = new String [7];
options[0] = "-F";
options[1] = "islemSayisi";
options[2] = "-L";
options[3] = "1";
options[4] = "-M";
options[5] = "7";
options[6] = "weekend";
forecaster.setOptions(options);
for (int i = 0; i < forecaster.getOptions().length; i++) {
System.out.println("Options" + i + ":"+
forecaster.getOptions()[i]);
}
System.out.println("Timestamp field:"+
forecaster.getTSLagMaker().getTimeStampField());
List<List<NumericPrediction>> forecast =
forecaster.forecast(numberOfDay, System.out);
for (int i = 0; i < numberOfDay; i++) {
List<NumericPrediction> predsAtStep = forecast.get(i);
forecaster.getTSLagMaker().setMinLag(1);
forecaster.getTSLagMaker().setMaxLag(i);
NumericPrediction predForTarget = predsAtStep.get(0);
System.out.print("" + predForTarget.predicted() + " ");
System.out.println();
}
TSEvaluation eval = new TSEvaluation(data, 0.2);
eval.setHorizon(30);
eval.setEvaluateOnTestData(true);
eval.setEvaluateOnTrainingData(false);
eval.evaluateForecaster(forecaster, System.out);
System.out.println(eval.toSummaryString());
No comments:
Post a Comment