sklearn.gaussian_process.kernels
.Matern¶
- class sklearn.gaussian_process.kernels.Matern¶
Núcleo Matern (Matern kernel).
La clase de núcleos Matern es una generalización de la
RBF
. Tiene un parámetro adicional \(\nu\) que controla la suavidad de la función resultante. Cuanto más pequeño sea \(\nu\), menos suave será la función aproximada. Como \(\nu\rightarrow\infty\), el núcleo se hace equivalente al núcleoRBF
. Cuando \(\nu = 1/2\), el núcleo Matérn se vuelve idéntico al núcleo exponencial absoluto. Los valores intermedios importantes son \(\nu=1,5\) (funciones una vez diferenciables) y \(\nu=2,5\) (funciones dos veces diferenciables).El núcleo es dado por:
\[k(x_i, x_j) = \frac{1}{\Gamma(\nu)2^{\nu-1}}\Bigg( \frac{\sqrt{2\nu}}{l} d(x_i , x_j ) \Bigg)^\nu K_\nu\Bigg( \frac{\sqrt{2\nu}}{l} d(x_i , x_j )\Bigg)\]donde \(d(\cdot,\cdot)\) es la distancia euclidiana, \(K_{\nu}(\cdot)\) es una función de Bessel modificada y \(Gamma(\cdot)\) es la función gamma. Consulta [1], capítulo 4, sección 4.2, para conocer los detalles de las distintas variantes del núcleo Matern.
Más información en el Manual de usuario.
Nuevo en la versión 0.18.
- Parámetros
- length_scalefloat o ndarray de forma (n_features,), default=1.0
La escala de longitud del núcleo. Si es un flotador, se utiliza un núcleo isotrópico. Si es un arreglo, se utiliza un núcleo anisotrópico en el que cada dimensión de l define la escala de longitud de la respectiva dimensión de la característica.
- length_scale_boundspar de flotantes >= 0 o «fixed», default=(1e-5, 1e5)
El límite inferior y superior de “length_scale”. Si se establece como » fixed», “length_scale” no puede cambiarse durante el ajuste de los hiperparámetros.
- nufloat, default=1.5
El parámetro nu controla la suavidad de la función aprendida. Cuanto menor sea nu, menos suave será la función aproximada. Para nu=inf, el núcleo es equivalente al núcleo RBF y para nu=0.5 al núcleo exponencial absoluto. Los valores intermedios importantes son nu=1.5 (funciones una vez diferenciables) y nu=2.5 (funciones dos veces diferenciables). Hay que tener en cuenta que los valores de nu que no están en [0.5, 1.5, 2.5, inf] tienen un coste computacional considerablemente mayor (aproximadamente 10 veces más), ya que requieren evaluar la función de Bessel modificada. Además, a diferencia de l, nu se mantiene fijo en su valor inicial y no se optimiza.
- Atributos
- anisotropic
bounds
Devuelve los límites transformados en logaritmo del theta.
- hyperparameter_length_scale
hyperparameters
Devuelve una lista de todas las especificaciones de los hiperparámetros.
n_dims
Devuelve el número de hiperparámetros no fijos del núcleo.
requires_vector_input
Devuelve si el núcleo está definido en vectores de características de longitud fija o en objetos genéricos.
theta
Devuelve los hiperparámetros no fijos (aplanados y transformados en logaritmos).
Referencias
Ejemplos
>>> 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...]])
Métodos
Devuelve el núcleo k(X, Y) y opcionalmente su gradiente.
Devuelve un clon de sí mismo con los hiperparámetros dados theta.
Devuelve la diagonal del núcleo k(X, X).
Obtiene los parámetros de este núcleo.
Devuelve si el núcleo es estacionario.
Establece los parámetros de este núcleo.
- __call__()¶
Devuelve el núcleo k(X, Y) y opcionalmente su gradiente.
- Parámetros
- Xndarray de forma (n_samples_X, n_features)
Argumento izquierdo del núcleo devuelto k(X, Y)
- Yndarray de forma (n_samples_Y, n_features), default=None
Argumento derecho del núcleo devuelto k(X, Y). Si es None, se evalúa k(X, X) en su lugar.
- eval_gradientbool, default=False
Determina si se calcula el gradiente con respecto al logaritmo del hiperparámetro del núcleo. Sólo se admite cuando Y es None.
- Devuelve
- Kndarray de forma (n_samples_X, n_samples_Y)
Núcleo k(X, Y)
- K_gradientndarray de forma (n_samples_X, n_samples_X, n_dims), opcional
El gradiente del núcleo k(X, X) con respecto al logaritmo del hiperparámetro del núcleo. Sólo se devuelve cuando
eval_gradient
es True.
- property bounds¶
Devuelve los límites transformados en logaritmo del theta.
- Devuelve
- boundsndarray de forma(n_dims, 2)
Los límites transformados logarítmicamente de los hiperparámetros del núcleo theta
- clone_with_theta()¶
Devuelve un clon de sí mismo con los hiperparámetros dados theta.
- Parámetros
- thetandarray de forma (n_dims,)
Hiperparámetros
- diag()¶
Devuelve la diagonal del núcleo k(X, X).
El resultado de este método es idéntico al de np.diag(self(X)); sin embargo, se puede evaluar de forma más eficiente ya que sólo se evalúa la diagonal.
- Parámetros
- Xndarray de forma (n_samples_X, n_features)
Argumento izquierdo del núcleo devuelto k(X, Y)
- Devuelve
- K_diagndarray de forma (n_samples_X,)
Diagonal del núcleo k(X, X)
- get_params()¶
Obtiene los parámetros de este núcleo.
- Parámetros
- deepbool, default=True
Si es True, devolverá los parámetros para este estimador y los subobjetos contenidos que son estimadores.
- Devuelve
- paramsdict
Nombres de parámetros mapeados a sus valores.
- property hyperparameters¶
Devuelve una lista de todas las especificaciones de los hiperparámetros.
- is_stationary()¶
Devuelve si el núcleo es estacionario.
- property n_dims¶
Devuelve el número de hiperparámetros no fijos del núcleo.
- property requires_vector_input¶
Devuelve si el núcleo está definido en vectores de características de longitud fija o en objetos genéricos. El valor predeterminado es True para la compatibilidad con versiones anteriores.
- set_params()¶
Establece los parámetros de este núcleo.
El método funciona tanto en núcleos simples como en núcleos anidados. Estos últimos tienen parámetros de la forma
<component>__<parameter>
para que sea posible actualizar cada componente de un objeto anidado.- Devuelve
- self
- property theta¶
Devuelve los hiperparámetros no fijos (aplanados y transformados en logaritmos).
Ten en cuenta que theta son típicamente los valores transformados en logaritmos de los hiperparámetros del núcleo, ya que esta representación del espacio de búsqueda es más adecuada para la búsqueda de hiperparámetros, ya que los hiperparámetros como las escalas de longitud viven naturalmente en una escala logarítmica.
- Devuelve
- thetandarray de forma (n_dims,)
Los hiperparámetros no fijos y transformados en logaritmos del núcleo