package JKernelMachines;
import JKernelMachines.Kernel;
/**
* Kernel on double[] that computes the L2 distance of a specified component j:
* k(x, y) = (x[j]-y[j])*(x[j]-y[j])
* @author dpicard
*
*/
public class IndexDoubleGaussL2 extends Kernel {
/**
*
*/
private static final long serialVersionUID = 102467593724674738L;
private double gamma = 0.1;
private int ind = 0;
public IndexDoubleGaussL2(int feature)
{
ind = feature;
}
@Override
public double valueOf(double[] t1, double[] t2) {
if(t1[ind] == 0. && t2[ind] == 0.)
return 1.;
return Math.exp(-gamma * (t1[ind] - t2[ind])*(t1[ind] - t2[ind]));
}
@Override
public double valueOf(double[] t1) {
return 1.0;
}
public void setGamma(double g)
{
gamma = g;
}
public void setIndex(int i)
{
this.ind = i;
}
public double getGamma() {
return gamma;
}
}