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 contextojoblib.parallel_backend
.-1
significa que se utilizan todos los procesadores. Ver Glosario para más detalles.
- Atributos
- base_estimator_ : instancia
Estimator
Instancia 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
- base_estimator_ : instancia
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
Ajusta el modelo de clasificación del proceso gaussiano
Obtiene los parámetros de este estimador.
Devuelve la verosimilitud logarítmica marginal de theta para los datos de entrenamiento.
Realiza la clasificación en un arreglo de vectores de prueba X.
Devuelve estimaciones de probabilidad para el vector de prueba X.
Devuelve la precisión media en los datos de prueba y las etiquetas dados.
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 ay
.
- 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.