GaussianProcessClassifier#
- class sklearn.gaussian_process.GaussianProcessClassifier(kernel=None, *, optimizer='fmin_l_bfgs_b', n_restarts_optimizer=0, max_iter_predict=100, warm_start=False, copy_X_train=True, random_state=None, multi_class='one_vs_rest', n_jobs=None)[source]#
基于拉普拉斯近似的高斯过程分类 (GPC)。
此实现基于 [RW2006] 中的算法 3.1、3.2 和 5.1。
在内部,使用拉普拉斯近似(Laplace approximation)将非高斯后验(non-Gaussian posterior)近似为高斯分布。
目前,此实现仅限于使用 logistic 链接函数。对于多分类问题,会拟合多个二分类“一对多”(one-versus-rest)分类器。请注意,因此此类并未实现真正的多分类拉普拉斯近似。
欲了解更多信息,请参阅 用户指南。
版本 0.18 新增。
- 参数:
- kernel核函数实例,default=None
指定高斯过程协方差函数的核函数。如果传入 None,则默认使用核函数“1.0 * RBF(1.0)”。请注意,核函数的超参数在拟合过程中会进行优化。此外,核函数不能是
CompoundKernel。- optimizer‘fmin_l_bfgs_b’、callable 或 None,default=’fmin_l_bfgs_b’
可以是内部支持的用于优化核函数参数的优化器之一(通过字符串指定),也可以是作为可调用对象传入的外部定义优化器。如果传入可调用对象,它必须具有以下签名
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
默认情况下,使用 scipy.optimize.minimize 中的 'L-BFGS-B' 算法。如果传入 None,则核函数的参数保持固定。可用的内部优化器包括
'fmin_l_bfgs_b'- n_restarts_optimizerint,default=0
优化器重启次数,用于寻找使对数边际似然最大化的核函数参数。优化器的第一次运行从核函数的初始参数开始,其余运行(如果有)从对数均匀随机采样自允许的 theta 值空间中的 theta 开始。如果大于 0,则所有边界都必须是有限的。请注意,n_restarts_optimizer=0 意味着执行一次运行。
- max_iter_predictint,default=100
在预测过程中,用于近似后验的牛顿法(Newton's method)的最大迭代次数。较小的值会减少计算时间,但代价是结果可能较差。
- warm_startbool, default=False
如果启用热启动(warm-starts),则上次牛顿迭代在后验众数拉普拉斯近似上的解将用作下一次调用 _posterior_mode() 的初始化。当 _posterior_mode 在超参数优化等类似问题上多次调用时,这可以加快收敛速度。请参阅 词汇表。
- copy_X_trainbool,default=True
如果为 True,则训练数据的持久副本存储在对象中。否则,只存储对训练数据的引用,如果数据在外部被修改,可能会导致预测发生变化。
- random_stateint, RandomState instance or None, default=None
确定用于初始化中心的随机数生成。传入 int 可在多次函数调用中获得可重现的结果。请参阅 词汇表。
- multi_class{‘one_vs_rest’, ‘one_vs_one’},default=’one_vs_rest’
指定如何处理多分类问题。支持 'one_vs_rest' 和 'one_vs_one'。在 'one_vs_rest' 中,为每个类别拟合一个二分类高斯过程分类器,训练该分类器以将该类别与其他类别分开。在 'one_vs_one' 中,为每对类别拟合一个二分类高斯过程分类器,训练该分类器以将这两个类别分开。这些二分类预测器的预测结果被组合成多分类预测。请注意,'one_vs_one' 不支持预测概率估计值。
- n_jobsint, default=None
用于计算的作业数:指定的多个分类问题并行计算。
None表示 1,除非处于joblib.parallel_backend上下文中。-1表示使用所有处理器。有关详细信息,请参阅 词汇表。
- 属性:
- base_estimator_
Estimator实例 使用观察数据定义似然函数的估计器实例。
kernel_核函数实例返回基本估计器的核函数。
- log_marginal_likelihood_value_float
self.kernel_.theta的对数边际似然值- classes_array-like of shape (n_classes,)
唯一的类标签。
- n_classes_int
训练数据中的类别数
- n_features_in_int
在 拟合 期间看到的特征数。
0.24 版本新增。
- feature_names_in_shape 为 (
n_features_in_,) 的 ndarray 在 fit 期间看到的特征名称。仅当
X具有全部为字符串的特征名称时才定义。1.0 版本新增。
- base_estimator_
另请参阅
GaussianProcessRegressor高斯过程回归 (GPR)。
References
示例
>>> 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]])
有关 GaussianProcessClassifier 与其他分类器的比较,请参阅:绘制分类概率。
- fit(X, y)[source]#
拟合高斯过程分类模型。
- 参数:
- Xarray-like of shape (n_samples, n_features) or list of object
特征向量或训练数据的其他表示形式。
- yarray-like of shape (n_samples,)
目标值,必须是二值的。
- 返回:
- selfobject
Returns an instance of self.
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查阅 用户指南,了解路由机制如何工作。
- 返回:
- routingMetadataRequest
封装路由信息的
MetadataRequest。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deepbool, default=True
如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。
- 返回:
- paramsdict
参数名称映射到其值。
- latent_mean_and_variance(X)[source]#
计算潜在函数(latent function)的均值和方差。
根据 [RW2006] 的算法 3.2,此函数返回高斯过程分类模型的潜在均值(第 4 行)和方差(第 6 行)。
请注意,此函数仅支持二分类。
在版本 1.7 中新增。
- 参数:
- Xarray-like of shape (n_samples, n_features) or list of object
用于分类的高斯过程评估的查询点。
- 返回:
- latent_meanarray-like of shape (n_samples,)
查询点处潜在函数值的均值。
- latent_vararray-like of shape (n_samples,)
查询点处潜在函数值的方差。
- log_marginal_likelihood(theta=None, eval_gradient=False, clone_kernel=True)[source]#
返回训练数据对于 theta 的对数边际似然。
在多分类情况下,返回“一对多”分类器的平均对数边际似然。
- 参数:
- thetaarray-like of shape (n_kernel_params,),default=None
用于评估对数边际似然的核函数超参数。在多分类情况下,theta 可以是复合核函数(compound kernel)的超参数,也可以是单个核函数的超参数。在后一种情况下,所有单个核函数都分配相同的 theta 值。如果为 None,则返回
self.kernel_.theta的预计算对数边际似然。- eval_gradientbool, default=False
如果为 True,则额外返回对数边际似然在 theta 位置处关于核函数超参数的梯度。请注意,非二分类不支持梯度计算。如果为 True,则 theta 不能为 None。
- clone_kernelbool,default=True
如果为 True,则复制核属性。如果为 False,则修改核属性,但这可能会提高性能。
- 返回:
- log_likelihoodfloat
训练数据对于 theta 的对数边际似然。
- log_likelihood_gradientndarray of shape (n_kernel_params,),可选
对数边际似然在 theta 位置处关于核函数超参数的梯度。仅当
eval_gradient为 True 时返回。
- predict(X)[source]#
对测试向量 X 数组执行分类。
- 参数:
- Xarray-like of shape (n_samples, n_features) or list of object
用于分类的高斯过程评估的查询点。
- 返回:
- Cndarray of shape (n_samples,)
X 的预测目标值,值来自
classes_。
- predict_proba(X)[source]#
返回测试向量 X 的概率估计值。
- 参数:
- Xarray-like of shape (n_samples, n_features) or list of object
用于分类的高斯过程评估的查询点。
- 返回:
- Carray-like of shape (n_samples, n_classes)
返回每个样本在模型中每个类别的概率。列对应于按排序顺序排列的类别,与其在属性 classes_ 中出现的顺序一致。
- score(X, y, sample_weight=None)[source]#
返回在提供的数据和标签上的 准确率 (accuracy)。
在多标签分类中,这是子集准确率 (subset accuracy),这是一个严格的指标,因为它要求每个样本的每个标签集都被正确预测。
- 参数:
- Xshape 为 (n_samples, n_features) 的 array-like
测试样本。
- yshape 为 (n_samples,) 或 (n_samples, n_outputs) 的 array-like
X的真实标签。- sample_weightshape 为 (n_samples,) 的 array-like, default=None
样本权重。
- 返回:
- scorefloat
self.predict(X)相对于y的平均准确率。
- set_params(**params)[source]#
设置此估计器的参数。
此方法适用于简单的估计器以及嵌套对象(如
Pipeline)。后者具有<component>__<parameter>形式的参数,以便可以更新嵌套对象的每个组件。- 参数:
- **paramsdict
估计器参数。
- 返回:
- selfestimator instance
估计器实例。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') GaussianProcessClassifier[source]#
配置是否应请求元数据以传递给
score方法。请注意,此方法仅在以下情况下相关:此估计器用作 元估计器 中的子估计器,并且通过
enable_metadata_routing=True启用了元数据路由(请参阅sklearn.set_config)。请查看 用户指南 以了解路由机制的工作原理。每个参数的选项如下:
True:请求元数据,如果提供则传递给score。如果未提供元数据,则忽略该请求。False:不请求元数据,元估计器不会将其传递给score。None:不请求元数据,如果用户提供元数据,元估计器将引发错误。str:应将元数据以给定别名而不是原始名称传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。在版本 1.3 中新增。
- 参数:
- sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
score方法中sample_weight参数的元数据路由。
- 返回:
- selfobject
更新后的对象。