package JKernelMachines; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import JKernelMachines.Kernel; import JKernelMachines.TrainingSample; /** * Classification tool using a Parzen window * @author dpicard * * @param type of input space */ public class ParzenClassifier implements Classifier, Serializable { /** * */ private static final long serialVersionUID = 5147554432765939157L; Kernel kernel; ArrayList> ts; public ParzenClassifier(Kernel kernel) { this.kernel = kernel; } /* (non-Javadoc) * @see JKernelMachines.Classifier#train(java.lang.Object, int) */ public void train(TrainingSample t) { if(ts == null) { ts = new ArrayList>(); } ts.add(t); } /* (non-Javadoc) * @see JKernelMachines.Classifier#train(T[], int[]) */ public void train(List> t) { ts = new ArrayList>(t); } /* (non-Javadoc) * @see JKernelMachines.Classifier#valueOf(java.lang.Object) */ public double valueOf(T e) { double sum = 0.; for(int i = 0 ; i < ts.size(); i++) { TrainingSample t = ts.get(i); sum += t.label * kernel.valueOf(t.sample, e); } sum /= ts.size(); return sum; } }