package se.kodapan.osm.city; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author kalle * @since 2015-01-12 04:47 */ public abstract class Classifier { private Palette palette; private InstanceFactory instanceFactory; private Map<Instance, String> trainingData = new HashMap<Instance, String>(1024); public void train(double south, double west, double north, double east, String classification) throws Exception { Instance instance = getInstanceFactory().newInstance(south, west, north, east); train(instance, classification); } public void train(Instance instance, String classification) throws Exception { trainingData.put(instance, classification); } public abstract void build() throws Exception; public String classify(double south, double west, double north, double east) throws Exception { return classify(getInstanceFactory().newInstance(south, west, north, east)); } public abstract String classify(Instance instance) throws Exception; public InstanceFactory getInstanceFactory() { return instanceFactory; } /** expert */ public void setInstanceFactory(InstanceFactory instanceFactory) { this.instanceFactory = instanceFactory; } public Palette getPalette() { return palette; } /** expert */ public void setPalette(Palette palette) { this.palette = palette; } public Map<Instance, String> getTrainingData() { return trainingData; } public void setTrainingData(Map<Instance, String> trainingData) { this.trainingData = trainingData; } }