Skip to content

Commit 5e3dd91

Browse files
committed
Added apply method to Covariance Function to create tunable kernels on the fly
1 parent 5356898 commit 5e3dd91

File tree

1 file changed

+16
-0
lines changed
  • dynaml-core/src/main/scala-2.11/io/github/mandar2812/dynaml/kernels

1 file changed

+16
-0
lines changed

dynaml-core/src/main/scala-2.11/io/github/mandar2812/dynaml/kernels/Kernel.scala

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,22 @@ object CovarianceFunction {
6464
SVMKernel.crossKernelMatrix(dataset1, dataset2, this.evaluate)
6565

6666
}
67+
68+
def apply[T](phi: Map[String, Double] => T => DenseVector[Double])(s: Map[String, Double]) =
69+
new LocalScalarKernel[T] {
70+
override val hyper_parameters: List[String] = s.keys.toList
71+
72+
state = s
73+
74+
override def evaluate(x: T, y: T): Double = phi(state)(x) dot phi(state)(y)
75+
76+
override def buildKernelMatrix[S <: Seq[T]](mappedData: S, length: Int): KernelMatrix[DenseMatrix[Double]] =
77+
SVMKernel.buildSVMKernelMatrix(mappedData, length, this.evaluate)
78+
79+
override def buildCrossKernelMatrix[S <: Seq[T]](dataset1: S, dataset2: S): DenseMatrix[Double] =
80+
SVMKernel.crossKernelMatrix(dataset1, dataset2, this.evaluate)
81+
82+
}
6783
}
6884

6985
abstract class CompositeCovariance[T]

0 commit comments

Comments
 (0)