1 | // Internal dependencies
|
2 | import LinAlg from '../math/linalg';
|
3 | import Kernel from './base';
|
4 |
|
5 | class GaussianKernel extends Kernel {
|
6 | /**
|
7 | * Constructor
|
8 | *
|
9 | * @param float sigmaSquared Optional. Normalization parameter for exponential
|
10 | */
|
11 | constructor(sigmaSquared = 1) {
|
12 | super();
|
13 |
|
14 | this.sigmaSquared = sigmaSquared;
|
15 | }
|
16 |
|
17 | /**
|
18 | * @see jsmlt.Kernel.Kernel::apply()
|
19 | */
|
20 | apply(x, y) {
|
21 | // Gaussian
|
22 | const diff = LinAlg.sum(x, LinAlg.scale(y, -1));
|
23 | return Math.exp(-LinAlg.dot(diff, diff) / (2 * this.sigmaSquared));
|
24 | }
|
25 | }
|
26 |
|
27 | export default GaussianKernel;
|