diff --git a/GPy/kern/__init__.py b/GPy/kern/__init__.py index 164b66b7..d8239910 100644 --- a/GPy/kern/__init__.py +++ b/GPy/kern/__init__.py @@ -32,7 +32,7 @@ from .src.trunclinear import TruncLinear,TruncLinear_inf from .src.splitKern import SplitKern,DEtime from .src.splitKern import DEtime as DiffGenomeKern from .src.spline import Spline -from .src.basis_funcs import LogisticBasisFuncKernel, LinearSlopeBasisFuncKernel, BasisFuncKernel, ChangePointBasisFuncKernel, DomainKernel +from .src.basis_funcs import LogisticBasisFuncKernel, LinearSlopeBasisFuncKernel, BasisFuncKernel, ChangePointBasisFuncKernel, DomainKernel, PolynomialBasisFuncKernel from .src.grid_kerns import GridRBF from .src.sde_matern import sde_Matern32 diff --git a/GPy/kern/src/basis_funcs.py b/GPy/kern/src/basis_funcs.py index 5d589aa6..569a12f1 100644 --- a/GPy/kern/src/basis_funcs.py +++ b/GPy/kern/src/basis_funcs.py @@ -102,6 +102,26 @@ class BasisFuncKernel(Kern): phi2 = phi2[:, None] return phi1.dot(phi2.T) +class PolynomialBasisFuncKernel(BasisFuncKernel): + def __init__(self, input_dim, degree, variance=1., active_dims=None, ARD=True, name='polynomial_basis'): + """ + A linear segment transformation. The segments start at start, \ + are then linear to stop and constant again. The segments are + normalized, so that they have exactly as much mass above + as below the origin. + + Start and stop can be tuples or lists of starts and stops. + Behaviour of start stop is as np.where(X