# sklearn.gaussian_process.kernels.PairwiseKernel¶

class sklearn.gaussian_process.kernels.PairwiseKernel(gamma=1.0, gamma_bounds=1e-05, 100000.0, metric='linear', pairwise_kernels_kwargs=None)[source]

Wrapper for kernels in sklearn.metrics.pairwise.

A thin wrapper around the functionality of the kernels in sklearn.metrics.pairwise.

Note: Evaluation of eval_gradient is not analytic but numeric and all

kernels support only isotropic distances. The parameter gamma is considered to be a hyperparameter and may be optimized. The other kernel parameters are set directly at initialization and are kept fixed.

New in version 0.18.

Parameters
gammafloat, default=1.0

Parameter gamma of the pairwise kernel specified by metric. It should be positive.

gamma_boundspair of floats >= 0 or “fixed”, default=(1e-5, 1e5)

The lower and upper bound on ‘gamma’. If set to “fixed”, ‘gamma’ cannot be changed during hyperparameter tuning.

metric{“linear”, “additive_chi2”, “chi2”, “poly”, “polynomial”, “rbf”, “laplacian”, “sigmoid”, “cosine”} or callable, default=”linear”

The metric to use when calculating kernel between instances in a feature array. If metric is a string, it must be one of the metrics in pairwise.PAIRWISE_KERNEL_FUNCTIONS. If metric is “precomputed”, X is assumed to be a kernel matrix. Alternatively, if metric is a callable function, it is called on each pair of instances (rows) and the resulting value recorded. The callable should take two arrays from X as input and return a value indicating the distance between them.

pairwise_kernels_kwargsdict, default=None

All entries of this dict (if any) are passed as keyword arguments to the pairwise kernel function.

Attributes
bounds

Returns the log-transformed bounds on the theta.

hyperparameter_gamma
hyperparameters

Returns a list of all hyperparameter specifications.

n_dims

Returns the number of non-fixed hyperparameters of the kernel.

requires_vector_input

Returns whether the kernel is defined on fixed-length feature vectors or generic objects.

theta

Returns the (flattened, log-transformed) non-fixed hyperparameters.

Examples

>>> from sklearn.datasets import load_iris
>>> from sklearn.gaussian_process import GaussianProcessClassifier
>>> from sklearn.gaussian_process.kernels import PairwiseKernel
>>> X, y = load_iris(return_X_y=True)
>>> kernel = PairwiseKernel(metric='rbf')
>>> gpc = GaussianProcessClassifier(kernel=kernel,
...         random_state=0).fit(X, y)
>>> gpc.score(X, y)
0.9733...
>>> gpc.predict_proba(X[:2,:])
array([[0.8880..., 0.05663..., 0.05532...],
[0.8676..., 0.07073..., 0.06165...]])


Methods

 __call__(X[, Y, eval_gradient]) Return the kernel k(X, Y) and optionally its gradient. clone_with_theta(theta) Returns a clone of self with given hyperparameters theta. Returns the diagonal of the kernel k(X, X). get_params([deep]) Get parameters of this kernel. Returns whether the kernel is stationary. set_params(**params) Set the parameters of this kernel.
__call__(X, Y=None, eval_gradient=False)[source]

Return the kernel k(X, Y) and optionally its gradient.

Parameters
Xndarray of shape (n_samples_X, n_features)

Left argument of the returned kernel k(X, Y)

Yndarray of shape (n_samples_Y, n_features), default=None

Right argument of the returned kernel k(X, Y). If None, k(X, X) if evaluated instead.

Determines whether the gradient with respect to the log of the kernel hyperparameter is computed. Only supported when Y is None.

Returns
Kndarray of shape (n_samples_X, n_samples_Y)

Kernel k(X, Y)

K_gradientndarray of shape (n_samples_X, n_samples_X, n_dims), optional

The gradient of the kernel k(X, X) with respect to the log of the hyperparameter of the kernel. Only returned when eval_gradient is True.

property bounds

Returns the log-transformed bounds on the theta.

Returns
boundsndarray of shape (n_dims, 2)

The log-transformed bounds on the kernel’s hyperparameters theta

clone_with_theta(theta)[source]

Returns a clone of self with given hyperparameters theta.

Parameters
thetandarray of shape (n_dims,)

The hyperparameters

diag(X)[source]

Returns the diagonal of the kernel k(X, X).

The result of this method is identical to np.diag(self(X)); however, it can be evaluated more efficiently since only the diagonal is evaluated.

Parameters
Xndarray of shape (n_samples_X, n_features)

Left argument of the returned kernel k(X, Y)

Returns
K_diagndarray of shape (n_samples_X,)

Diagonal of kernel k(X, X)

get_params(deep=True)[source]

Get parameters of this kernel.

Parameters
deepbool, default=True

If True, will return the parameters for this estimator and contained subobjects that are estimators.

Returns
paramsdict

Parameter names mapped to their values.

property hyperparameters

Returns a list of all hyperparameter specifications.

is_stationary()[source]

Returns whether the kernel is stationary.

property n_dims

Returns the number of non-fixed hyperparameters of the kernel.

property requires_vector_input

Returns whether the kernel is defined on fixed-length feature vectors or generic objects. Defaults to True for backward compatibility.

set_params(**params)[source]

Set the parameters of this kernel.

The method works on simple kernels as well as on nested kernels. The latter have parameters of the form <component>__<parameter> so that it’s possible to update each component of a nested object.

Returns
self
property theta

Returns the (flattened, log-transformed) non-fixed hyperparameters.

Note that theta are typically the log-transformed values of the kernel’s hyperparameters as this representation of the search space is more amenable for hyperparameter search, as hyperparameters like length-scales naturally live on a log-scale.

Returns
thetandarray of shape (n_dims,)

The non-fixed, log-transformed hyperparameters of the kernel