sklearn.gaussian_process.GaussianProcessClassifier

class sklearn.gaussian_process.GaussianProcessClassifier

Clasificación de procesos gaussianos (GPC) basada en la aproximación de Laplace.

La implementación se basa en los algoritmos 3.1, 3.2 y 5.1 de Gaussian Processes for Machine Learning (GPML) de Rasmussen y Williams.

Internamente, la aproximación de Laplace se utiliza para aproximar la distribución posterior no gaussiana por una gaussiana.

Actualmente, la implementación se limita a utilizar la función de enlace logístico. Para la clasificación multiclase, se ajustan varios clasificadores binarios de uno contra otro. Hay que tener en cuenta que esta clase no implementa una verdadera aproximación de Laplace multiclase.

Más información en el Manual de usuario.

Parámetros
kernelinstancia de núcleo, default=None

El núcleo que especifica la función de covarianza de la GP. Si se pasa None, el núcleo «1.0 * RBF(1.0)» se utiliza por defecto. Ten en cuenta que los hiperparámetros del núcleo se optimizan durante el ajuste.

optimizer“fmin_l_bfgs_b” or callable, default=”fmin_l_bfgs_b”

Puede ser uno de los optimizadores soportados internamente para optimizar los parámetros del núcleo, especificado por una cadena, o un optimizador definido externamente pasado como un invocable. Si se pasa un invocable, debe tener la firma (signature):

def optimizer(obj_func, initial_theta, bounds):
    # * 'obj_func' is the objective function to be maximized, which
    #   takes the hyperparameters theta as parameter and an
    #   optional flag eval_gradient, which determines if the
    #   gradient is returned additionally to the function value
    # * 'initial_theta': the initial value for theta, which can be
    #   used by local optimizers
    # * 'bounds': the bounds on the values of theta
    ....
    # Returned are the best found hyperparameters theta and
    # the corresponding value of the target function.
    return theta_opt, func_min

Por defecto, se utiliza el algoritmo “L-BFGS-B” de scipy.optimize.minimize. Si se pasa None, los parámetros del núcleo se mantienen fijos. Los optimizadores internos disponibles son:

'fmin_l_bfgs_b'
n_restarts_optimizerint, default=0

El número de reinicios del optimizador para encontrar los parámetros del núcleo que maximizan la verosimilitud logarítmica marginal. La primera ejecución del optimizador se realiza a partir de los parámetros iniciales del núcleo, los restantes (si los hay) a partir de los valores logarítmicos uniformes muestreados aleatoriamente del espacio de valores logarítmicos permitidos. Si es mayor que 0, todos los límites deben ser finitos. Nótese que n_restarts_optimizer=0 implica que se realiza una sola ejecución.

max_iter_predictint, default=100

El número máximo de iteraciones en el método de Newton para aproximar la posterior durante la predicción. Los valores más pequeños reducirán el tiempo de cálculo a costa de peores resultados.

warm_startbool, default=False

Si se activan los inicios en caliente, la solución de la última iteración de Newton sobre la aproximación de Laplace del modo posterior (posterior mode) se utiliza como inicialización para la siguiente llamada de _posterior_mode(). Esto puede acelerar la convergencia cuando se llama a _posterior_mode varias veces sobre problemas similares como en la optimización de hiperparámetros. Ver el Glosario.

copy_X_trainbool, default=True

Si es True, se almacena una copia persistente de los datos de entrenamiento en el objeto. De lo contrario, sólo se almacena una referencia a los datos de entrenamiento, lo que podría hacer que las predicciones cambien si los datos se modifican externamente.

random_stateentero, instancia de RandomState o None, default=None

Determina la generación de números aleatorios utilizados para inicializar los centros. Se pasa un int para obtener resultados reproducibles a través de múltiples invocaciones a la función. Ver :term: Glosario <random_state>.

multi_class{“one_vs_rest”, “one_vs_one”}, default=”one_vs_rest”

Especifica cómo se manejan los problemas de clasificación multiclase. Se admiten las opciones “one_vs_rest” y “one_vs_one”. En “one_vs_rest”, se ajusta un clasificador de proceso gaussiano binario para cada clase, que se entrena para separar esta clase del resto. En » one_vs_one», se ajusta un clasificador de proceso gaussiano binario para cada par de clases, que se entrena para separar estas dos clases. Las predicciones de estos predictores binarios se combinan en predicciones multiclase. Tenga en cuenta que “one_vs_one” no admite la predicción de estimaciones de probabilidad.

n_jobsint, default=None

El número de tareas a utilizar para el cálculo: los problemas multiclase especificados se calculan en paralelo. None significa 1 a menos que en un contexto joblib.parallel_backend. -1 significa que se utilizan todos los procesadores. Ver Glosario para más detalles.

Atributos
base_estimator_ : instancia EstimatorInstancia del estimador

La instancia del estimador que define la función de verosimilitud utilizando los datos observados.

kernel_instancia de núcleo

El núcleo (kernel) utilizado para la predicción. En caso de clasificación binaria, la estructura del núcleo es la misma que la pasada como parámetro pero con hiperparámetros optimizados. En el caso de la clasificación multiclase, se devuelve un CompoundKernel que consiste en los diferentes núcleos utilizados en los clasificadores uno-contra-otro (one-versus-rest).

log_marginal_likelihood_value_float

La verosimilitud logarítmica marginal de self.kernel_.theta

classes_array-like de forma (n_classes,)

Etiquetas de clase únicas.

n_classes_int

El número de clases en los datos de entrenamiento

Ejemplos

>>> from sklearn.datasets import load_iris
>>> from sklearn.gaussian_process import GaussianProcessClassifier
>>> from sklearn.gaussian_process.kernels import RBF
>>> X, y = load_iris(return_X_y=True)
>>> kernel = 1.0 * RBF(1.0)
>>> gpc = GaussianProcessClassifier(kernel=kernel,
...         random_state=0).fit(X, y)
>>> gpc.score(X, y)
0.9866...
>>> gpc.predict_proba(X[:2,:])
array([[0.83548752, 0.03228706, 0.13222543],
       [0.79064206, 0.06525643, 0.14410151]])

Nuevo en la versión 0.18.

Métodos

fit

Ajusta el modelo de clasificación del proceso gaussiano

get_params

Obtiene los parámetros de este estimador.

log_marginal_likelihood

Devuelve la verosimilitud logarítmica marginal de theta para los datos de entrenamiento.

predict

Realiza la clasificación en un arreglo de vectores de prueba X.

predict_proba

Devuelve estimaciones de probabilidad para el vector de prueba X.

score

Devuelve la precisión media en los datos de prueba y las etiquetas dados.

set_params

Establece los parámetros de este estimador.

fit()

Ajusta el modelo de clasificación del proceso gaussiano

Parámetros
Xarray-like de forma (n_samples, n_features) o lista del objetoarray-like

Vectores de características u otras representaciones de los datos de entrenamiento.

yarray-like de forma (n_samples,)

Valores objetivo (target values), deben ser binarios

Devuelve
selfdevuelve una instancia de sí misma.
get_params()

Obtiene los parámetros de este estimador.

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.

log_marginal_likelihood()

Devuelve la verosimilitud logarítmica marginal de theta para los datos de entrenamiento.

En el caso de la clasificación multiclase, se devuelve la media de la verosimilitud logarítmica marginal de los clasificadores de una contra otra (one-versus-rest).

Parámetros
thetaarray-like de forma (n_kernel_params,), default=None

Hiperparámetros del núcleo para el que se evalúa la verosimilitud logarítmica marginal. En el caso de la clasificación multiclase, theta puede ser los hiperparámetros del núcleo compuesto o de un núcleo individual. En este último caso, a todos los núcleos individuales se les asignan los mismos valores theta. Si es None, se devuelve el log_marginal_likelihood precalculado de self.kernel_.theta.

eval_gradientbool, default=False

Si es True, el gradiente de la verosimilitud logarítmica marginal con respecto a los hiperparámetros del núcleo en la posición theta se devuelve adicionalmente. Ten en cuenta que el cálculo del gradiente no es compatible con la clasificación no binaria. Si es True, theta no debe ser None.

clone_kernelbool, default=True

Si es True, se copia el atributo kernel. Si es False, el atributo kernel se modifica, pero puede dar lugar a una mejora del rendimiento.

Devuelve
log_likelihoodfloat

Verosimilitud logarítmica marginal de theta para los datos de entrenamiento.

log_likelihood_gradientndarray de forma (n_kernel_params,), opcional

Gradiente de la verosimilitud logarítmica marginal con respecto a los hiperparámetros del núcleo en la posición theta. Sólo se devuelve cuando eval_gradient es True.

predict()

Realiza la clasificación en un arreglo de vectores de prueba X.

Parámetros
Xarray-like de forma (n_samples, n_features) o lista del objetoarray-like

Puntos de consulta (query points) en los que se evalúa la GP para la clasificación.

Devuelve
Cndarray de forma (n_samples,)

Valores objetivo predichos para X, los valores provienen de classes_

predict_proba()

Devuelve estimaciones de probabilidad para el vector de prueba X.

Parámetros
Xarray-like de forma (n_samples, n_features) o lista del objetoarray-like

Puntos de consulta (query points) en los que se evalúa la GP para la clasificación.

Devuelve
Carray-like de forma (n_samples, n_features)

Devuelve la probabilidad de las muestras para cada clase del modelo. Las columnas corresponden a las clases ordenadas, tal y como aparecen en el atributo classes_.

score()

Devuelve la precisión media en los datos de prueba y las etiquetas dados.

En la clasificación multietiqueta, esta es la precisión del subconjunto, la cual es una métrica rigurosa ya que se requiere para cada muestra que cada conjunto de etiquetas sea predicho correctamente.

Parámetros
Xarray-like de forma (n_samples, n_features)

Muestras de prueba.

yarray-like de forma (n_samples,) or (n_samples, n_outputs)

Etiquetas verdaderas para X.

sample_weightarray-like de forma (n_samples,), default=None

Ponderados de muestras.

Devuelve
scorefloat

Precisión media de self.predict(X) con relación a y.

set_params()

Establece los parámetros de este estimador.

El método funciona tanto en estimadores simples como en objetos anidados (como Pipeline). Estos últimos tienen parámetros de la forma <component>__<parameter> para que sea posible actualizar cada componente de un objeto anidado.

Parámetros
**paramsdict

Parámetros del estimador.

Devuelve
selfinstancia del estimador

Instancia del estimador.

Ejemplos usando sklearn.gaussian_process.GaussianProcessClassifier