class ShotgunEnsembleClassifier extends ASimplifiedTSClassifier<Integer> {

	protected List<Integer> mostFrequentLabelsFromWindowLengthPredicitions(final Map<Integer, List<Integer>> windowLengthPredicitions) {
		// Return most frequent label for each instance.
		int numberOfInstances = windowLengthPredicitions.values().iterator().next().size();

		List<Integer> predicitions = new ArrayList<>(numberOfInstances);
		for (int i = 0; i < numberOfInstances; i++) {
			// Map holding (windowLength, predicition for instance) pairs.
			Map<Integer, Integer> windowLabelsForInstance = new HashMap<>();
			for (Entry<Integer, List<Integer>> entry : windowLengthPredicitions.entrySet()) {
				int windowLength = entry.getKey();
				int predictionForWindowLength = entry.getValue().get(i);
				windowLabelsForInstance.put(windowLength, predictionForWindowLength);
			}
			int mostFrequentLabelForInstance = this.mostFrequentLabelFromWindowLengthPredicitions(windowLabelsForInstance);
			predicitions.add(mostFrequentLabelForInstance);
		}

		return predicitions;
	}

	public  ShotgunEnsembleClassifier(final int minWindowLength, final int maxWindowLength, final boolean meanNormalization, final double factor);

}