package JKernelMachines; import java.io.Serializable; import java.util.ArrayList; import JKernelMachines.Kernel; /** * Parzen window for estimating the probability density function of a random variable. * @author dpicard * * @param Elements of input space */ public class ParzenDensity implements DensityFunction, Serializable { /** * */ private static final long serialVersionUID = -5414922333951533146L; private Kernel kernel; ArrayList set; public ParzenDensity(Kernel kernel) { this.kernel = kernel; } /* (non-Javadoc) * @see JKernelMachines.DensityFunction#train(java.lang.Object) */ public void train(T e) { if(set == null) { set = new ArrayList(); } set.add(e); } /* (non-Javadoc) * @see JKernelMachines.DensityFunction#train(T[]) */ public void train(ArrayList e) { if(set == null) { set = new ArrayList(); } for(T t : e) set.add(t); } /* (non-Javadoc) * @see JKernelMachines.DensityFunction#valueOf(java.lang.Object) */ public double valueOf(T e) { double sum = 0.; for(int i = 0 ; i < set.size(); i++) sum += kernel.valueOf(set.get(i), e); sum /= set.size(); return sum; } }