sklearn.gaussian_process.Matern¶
class sklearn.gaussian_process.kernels.Matern(length_scale=1.0, length_scale_bounds=(1e-05, 100000.0), nu=1.5)
Matern内核。
这类矩阵核是径向基函数 RBF
的推广。它有一个额外的参数来控制结果函数的平滑度。逼近函数越小,光滑性越差。当,核变得等价于RBF核。当现代核函数与绝对指数核函数完全相同。重要的中间值是(一次可微函数)和(二次可微函数)。
核函数为:
其中为欧氏距离,为修正贝塞尔函数,为伽马函数。参见[1],第4章4.2节,了解有关Matern内核的不同变种的详细信息。
在用户指南中阅读更多内容。
新版本0.18。
参数 | 说明 |
---|---|
length_scale | float or ndarray of shape (n_features,), default=1.0 核的长度尺度。如果是浮点数,则使用各向同性核。如果是一个数组,则使用各向异性核,其中l的每个维数定义了各自特征维数的长度尺度。 |
length_scale_bounds | pair of floats >= 0 or “fixed”, default=(1e-5, 1e5) length_scale上的下界和上界。如果设置为“固定”,则“length_scale”在超参数调优期间无法更改。 |
nu | 参数nu控制学习函数的平滑性。nu越小,逼近的函数越不光滑。对于nu=inf,核等价于RBF核,对于nu=0.5的绝对指数核。重要的中间值是nu=1.5(一次可微函数)和nu=2.5(二次可微函数)。注意,nu的值不在[0.5,1.5,2.5,inf]中,这会导致相当高的计算成本(appr)。10倍)因为它们需要计算修改后的贝塞尔函数。此外,与l相比,nu保持在初始值不变,没有经过优化。 |
属性 | 说明 |
---|---|
anisotropic | |
bounds | 返回的对数变换界限。 |
hyperparameter_length_scale | |
hyperparameters | 返回所有超参数规范的列表。 |
n_dims | 返回内核的非固定超参数的数量。 |
requires_vector_input | 返回内核是在固定长度的特征向量上定义的还是在通用对象上定义的。 |
theta) | 返回(扁平的、对数转换的)非固定超参数。 |
参考
Rc15b4675c755-1 卡尔·爱德华·拉斯穆森,克里斯托弗·威廉姆斯(2006)。机器学习的高斯过程。麻省理工学院出版社。
示例
>>> from sklearn.datasets import load_iris
>>> from sklearn.gaussian_process import GaussianProcessClassifier
>>> from sklearn.gaussian_process.kernels import Matern
>>> X, y = load_iris(return_X_y=True)
>>> kernel = 1.0 * Matern(length_scale=1.0, nu=1.5)
>>> gpc = GaussianProcessClassifier(kernel=kernel,
... random_state=0).fit(X, y)
>>> gpc.score(X, y)
0.9866...
>>> gpc.predict_proba(X[:2,:])
array([[0.8513..., 0.0368..., 0.1117...],
[0.8086..., 0.0693..., 0.1220...]])
方法
方法 | 说明 |
---|---|
__call__ (self, X[, Y, eval_gradient]) |
设置此参数内核。返回核k(X,Y)及其梯度。 |
clone_with_theta (self, theta) |
返回具有给定超参数theta的self的克隆。 |
diag (self, X) |
返回内核k(X,X)的对角线。 |
get_params (self[, deep]) |
获取这个内核的参数。 |
is_stationary (self) |
返回内核是否静止。 |
set_params (self, **params) |
设置此内核的参数。 |
__init__(self, length_scale=1.0, length_scale_bounds=(1e-05, 100000.0), nu=1.5)
初始化self. 请参阅help(type(self))以获得准确的说明 。
__call__(self, X, Y=None, eval_gradient=False)
返回核函数k(X, Y)和它的梯度。
参数 | 说明 |
---|---|
X | ndarray of shape (n_samples_X, n_features) 返回核函数k(X, Y)的左参数 |
Y | ndarray of shape (n_samples_Y, n_features), default=None 返回的核函数k(X, Y)的正确参数。如果没有,则计算k(X, X)。 |
eval_gradient | bool, default=False 确定关于核超参数的梯度是否确定。只有当Y没有的时候才被支持。 |
返回值 | 说明 |
---|---|
K | ndarray of shape (n_samples_X, n_samples_Y) 内核k (X, Y) |
K_gradient | ndarray of shape (n_samples_X, n_samples_X, n_dims), optional 核函数k(X, X)关于核函数超参数的梯度。只有当eval_gradient为真时才返回。 |
property bounds
返回的对数变换界限。
返回值 | 说明 |
---|---|
bounds | ndarray of shape (n_dims, 2) 核函数超参数的对数变换界限 |
clone_with_theta(theta)
返回带有给定超参数theta的self的克隆。
参数 | 说明 |
---|---|
theta | ndarray of shape (n_dims,) 的hyperparameters |
diag(self, X)
返回核函数k(X, X)的对角线。
该方法的结果与np.diag(self(X))相同;但是,由于只计算对角,因此可以更有效地计算它。
参数 | 说明 |
---|---|
X | array-like of shape (n_samples,) 返回核函数k(X, Y)的左参数 |
返回值 | 说明 |
---|---|
K_diag | ndarray of shape (n_samples_X,) 核k(X, X)的对角线 |
get_params(self, deep=True)
获取这个内核的参数。
参数 | 说明 |
---|---|
deep | bool, default=True 如果为真,将返回此估计器的参数以及包含的作为估计器的子对象。 |
返回值 | 说明 |
---|---|
params | dict 参数名称映射到它们的值。 |
property hyperparameters
返回所有超参数的列表。
is_stationary(self)
返回内核是否静止。
property n_dims
返回内核的非固定超参数的数量。
property requires_vector_input
返回内核是在固定长度的特征向量上定义的还是在通用对象上定义的。向后兼容性的默认值为True。
set_params(self, **params)
设置这个内核的参数。
该方法适用于简单估计量和嵌套对象(如pipline)。后者具有形式为<component>_<parameter>
的参数,这样就让更新嵌套对象的每个组件成为了可能。
返回值 | 说明 |
---|---|
self | - |
Examples using sklearn.gaussian_process.kernels.Matern
property theta
返回(扁平的、对数转换的)非固定超参数。
注意,theta通常是内核超参数的对数变换值,因为这种搜索空间的表示更适合超参数搜索,因为像长度尺度这样的超参数自然存在于对数尺度上。
返回值 | 说明 |
---|---|
theta | ndarray of shape (n_dims,) 核函数的非固定、对数变换超参数 |