package org.apache.samoa; /* * #%L * SAMOA * %% * Copyright (C) 2014 - 2015 Apache Software Foundation * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ public class TestParams { /** * templates that take the following parameters: * <ul> * <li>the output file location as an argument (-d), * <li>the maximum number of instances for testing/training (-i) * <li>the sampling size (-f) * <li>the delay in ms between input instances (-w) , default is zero * </ul> * as well as the maximum number of instances for testing/training (-i) and the sampling size (-f) */ public static class Templates { public final static String PREQEVAL_VHT_RANDOMTREE = "PrequentialEvaluation -d %s -i %d -f %d -w %d " + "-l (org.apache.samoa.learners.classifiers.trees.VerticalHoeffdingTree -p 4) " + "-s (org.apache.samoa.streams.generators.RandomTreeGenerator -c 2 -o 10 -u 10)"; public final static String PREQEVAL_NAIVEBAYES_HYPERPLANE = "PrequentialEvaluation -d %s -i %d -f %d -w %d " + "-l (classifiers.SingleClassifier -l org.apache.samoa.learners.classifiers.NaiveBayes) " + "-s (org.apache.samoa.streams.generators.HyperplaneGenerator -c 2)"; // setting the number of nominal attributes to zero significantly reduces // the processing time, // so that it's acceptable in a test case public final static String PREQEVAL_BAGGING_RANDOMTREE = "PrequentialEvaluation -d %s -i %d -f %d -w %d " + "-l (org.apache.samoa.learners.classifiers.ensemble.Bagging) " + "-s (org.apache.samoa.streams.generators.RandomTreeGenerator -c 2 -o 0 -u 10)"; public final static String PREQCVEVAL_VHT_RANDOMTREE = "PrequentialCVEvaluation -d %s -i %d -f %d -w %d " + "-l (org.apache.samoa.learners.classifiers.trees.VerticalHoeffdingTree -p 4) " + "-s (org.apache.samoa.streams.generators.RandomTreeGenerator -c 2 -o 10 -u 10)"; } public static final String EVALUATION_INSTANCES = "evaluation instances"; public static final String CLASSIFIED_INSTANCES = "classified instances"; public static final String CLASSIFICATIONS_CORRECT = "classifications correct (percent)"; public static final String KAPPA_STAT = "Kappa Statistic (percent)"; public static final String KAPPA_TEMP_STAT = "Kappa Temporal Statistic (percent)"; private long inputInstances; private long samplingSize; private long evaluationInstances; private long classifiedInstances; private float classificationsCorrect; private float kappaStat; private float kappaTempStat; private String cliStringTemplate; private int pollTimeoutSeconds; private final int prePollWait; private int inputDelayMicroSec; private String taskClassName; private TestParams(String taskClassName, long inputInstances, long samplingSize, long evaluationInstances, long classifiedInstances, float classificationsCorrect, float kappaStat, float kappaTempStat, String cliStringTemplate, int pollTimeoutSeconds, int prePollWait, int inputDelayMicroSec) { this.taskClassName = taskClassName; this.inputInstances = inputInstances; this.samplingSize = samplingSize; this.evaluationInstances = evaluationInstances; this.classifiedInstances = classifiedInstances; this.classificationsCorrect = classificationsCorrect; this.kappaStat = kappaStat; this.kappaTempStat = kappaTempStat; this.cliStringTemplate = cliStringTemplate; this.pollTimeoutSeconds = pollTimeoutSeconds; this.prePollWait = prePollWait; this.inputDelayMicroSec = inputDelayMicroSec; } public String getTaskClassName() { return taskClassName; } public long getInputInstances() { return inputInstances; } public long getSamplingSize() { return samplingSize; } public int getPollTimeoutSeconds() { return pollTimeoutSeconds; } public int getPrePollWaitSeconds() { return prePollWait; } public String getCliStringTemplate() { return cliStringTemplate; } public long getEvaluationInstances() { return evaluationInstances; } public long getClassifiedInstances() { return classifiedInstances; } public float getClassificationsCorrect() { return classificationsCorrect; } public float getKappaStat() { return kappaStat; } public float getKappaTempStat() { return kappaTempStat; } public int getInputDelayMicroSec() { return inputDelayMicroSec; } @Override public String toString() { return "TestParams{\n" + "inputInstances=" + inputInstances + "\n" + "samplingSize=" + samplingSize + "\n" + "evaluationInstances=" + evaluationInstances + "\n" + "classifiedInstances=" + classifiedInstances + "\n" + "classificationsCorrect=" + classificationsCorrect + "\n" + "kappaStat=" + kappaStat + "\n" + "kappaTempStat=" + kappaTempStat + "\n" + "cliStringTemplate='" + cliStringTemplate + '\'' + "\n" + "pollTimeoutSeconds=" + pollTimeoutSeconds + "\n" + "prePollWait=" + prePollWait + "\n" + "taskClassName='" + taskClassName + '\'' + "\n" + "inputDelayMicroSec=" + inputDelayMicroSec + "\n" + '}'; } public static class Builder { private long inputInstances; private long samplingSize; private long evaluationInstances; private long classifiedInstances; private float classificationsCorrect; private float kappaStat = 0f; private float kappaTempStat = 0f; private String cliStringTemplate; private int pollTimeoutSeconds = 10; private int prePollWaitSeconds = 10; private String taskClassName; private int inputDelayMicroSec = 0; public Builder taskClassName(String taskClassName) { this.taskClassName = taskClassName; return this; } public Builder inputInstances(long inputInstances) { this.inputInstances = inputInstances; return this; } public Builder samplingSize(long samplingSize) { this.samplingSize = samplingSize; return this; } public Builder evaluationInstances(long evaluationInstances) { this.evaluationInstances = evaluationInstances; return this; } public Builder classifiedInstances(long classifiedInstances) { this.classifiedInstances = classifiedInstances; return this; } public Builder classificationsCorrect(float classificationsCorrect) { this.classificationsCorrect = classificationsCorrect; return this; } public Builder kappaStat(float kappaStat) { this.kappaStat = kappaStat; return this; } public Builder kappaTempStat(float kappaTempStat) { this.kappaTempStat = kappaTempStat; return this; } public Builder cliStringTemplate(String cliStringTemplate) { this.cliStringTemplate = cliStringTemplate; return this; } public Builder resultFilePollTimeout(int pollTimeoutSeconds) { this.pollTimeoutSeconds = pollTimeoutSeconds; return this; } public Builder inputDelayMicroSec(int inputDelayMicroSec) { this.inputDelayMicroSec = inputDelayMicroSec; return this; } public Builder prePollWait(int prePollWaitSeconds) { this.prePollWaitSeconds = prePollWaitSeconds; return this; } public TestParams build() { return new TestParams(taskClassName, inputInstances, samplingSize, evaluationInstances, classifiedInstances, classificationsCorrect, kappaStat, kappaTempStat, cliStringTemplate, pollTimeoutSeconds, prePollWaitSeconds, inputDelayMicroSec); } } }