@CodeReview(reviewer="Kevin R. Dixon", date="2009-07-08", changesNeeded=false, comments="Looks fine.") public class RadialBasisKernel extends AbstractCloneableSerializable implements Kernel<Vectorizable>
RadialBasisKernel
implements the standard radial basis
kernel, which is:
Modifier and Type | Field and Description |
---|---|
static double |
DEFAULT_SIGMA
The default value for sigma is 1.0.
|
Constructor and Description |
---|
RadialBasisKernel()
Creates a new instance of RadialBasisKernel with a default value for
sigma of 1.0.
|
RadialBasisKernel(double sigma)
Creates a new instance of RadialBasisKernel with the given value for
sigma.
|
RadialBasisKernel(RadialBasisKernel other)
Creates a new copy of a RadialBasisKernel.
|
Modifier and Type | Method and Description |
---|---|
RadialBasisKernel |
clone()
This makes public the clone method on the
Object class and
removes the exception that it throws. |
double |
evaluate(Vectorizable x,
Vectorizable y)
Evaluates the following kernel between the two given vectors:
exp( -||x - y||^2 / (2 * sigma^2))
|
double |
getSigma()
Gets the sigma value that controls the bandwidth of the kernel.
|
void |
setSigma(double sigma)
Sets the sigma value that controls the bandwidth of the kernel.
|
public static final double DEFAULT_SIGMA
public RadialBasisKernel()
public RadialBasisKernel(double sigma)
sigma
- The sigma parameter that controls the bandwidth of the
kernel.public RadialBasisKernel(RadialBasisKernel other)
other
- The RadialBasisKernel to copy.public RadialBasisKernel clone()
AbstractCloneableSerializable
Object
class and
removes the exception that it throws. Its default behavior is to
automatically create a clone of the exact type of object that the
clone is called on and to copy all primitives but to keep all references,
which means it is a shallow copy.
Extensions of this class may want to override this method (but call
super.clone()
to implement a "smart copy". That is, to target
the most common use case for creating a copy of the object. Because of
the default behavior being a shallow copy, extending classes only need
to handle fields that need to have a deeper copy (or those that need to
be reset). Some of the methods in ObjectUtil
may be helpful in
implementing a custom clone method.
Note: The contract of this method is that you must use
super.clone()
as the basis for your implementation.clone
in interface CloneableSerializable
clone
in class AbstractCloneableSerializable
public double evaluate(Vectorizable x, Vectorizable y)
evaluate
in interface Kernel<Vectorizable>
x
- The first vector.y
- The second vector.public double getSigma()
public void setSigma(double sigma)
sigma
- The sigma value for the kernel. Must be positive.