blob: fa0a37669a52f15eb70ac78b6da5d48d7a1a05ad [file] [log] [blame]
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.moa.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);
}
}
}