MCPcopy Create free account
hub / github.com/EdwardRaff/JSAT / NormalizedKernel

Class NormalizedKernel

JSAT/src/jsat/distributions/kernels/NormalizedKernel.java:31–137  ·  view source on GitHub ↗

This provides a wrapper kernel that produces a normalized kernel trick from any input kernel trick. A normalized kernel has a maximum output of 1 when two inputs are the same. @author Edward Raff

Source from the content-addressed store, hash-verified

29 * @author Edward Raff
30 */
31public class NormalizedKernel implements KernelTrick
32{
33 private KernelTrick k;
34
35 public NormalizedKernel(KernelTrick source_kernel)
36 {
37 this.k = source_kernel;
38 }
39
40 @Override
41 public NormalizedKernel clone()
42 {
43 return new NormalizedKernel(k.clone());
44 }
45
46 @Override
47 public double eval(Vec a, Vec b)
48 {
49 double aa = k.eval(a, a);
50 double bb = k.eval(b, b);
51 if(aa == 0 || bb == 0)
52 return 0;
53 else
54 return k.eval(a, b)/Math.sqrt(aa*bb);
55 }
56
57 @Override
58 public List<Parameter> getParameters()
59 {
60 return k.getParameters();
61 }
62
63 @Override
64 public Parameter getParameter(String paramName)
65 {
66 return k.getParameter(paramName);
67 }
68
69 @Override
70 public boolean supportsAcceleration()
71 {
72 return k.supportsAcceleration();
73 }
74
75 @Override
76 public List<Double> getAccelerationCache(List<? extends Vec> trainingSet)
77 {
78 return k.getAccelerationCache(trainingSet);
79 }
80
81 @Override
82 public List<Double> getQueryInfo(Vec q)
83 {
84 return k.getQueryInfo(q);
85 }
86
87 @Override
88 public void addToCache(Vec newVec, List<Double> cache)

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected