sklearn.gaussian_process.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)
基于拉普拉斯逼近的高斯过程分类(GPC)。
该实现基于Rasmussen和Williams的机器学习高斯过程(GPML)算法3.1、3.2和5.1章节。
在内部,拉普拉斯近似用于用高斯函数逼近非高斯后验。
目前,该方法的实现仅限于使用 logistic 链路函数。对于多类分类,适合几个二进制的1 -对rest分类器。请注意,本课程并没有实现一个真正的多类拉普拉斯逼近。
参数 | 说明 |
---|---|
kernel | kernel instance, default=None 指定GP的协方差函数的核。如果没有传递,则默认使用内核“1.0 * RBF(1.0)”。注意,在拟合过程中优化了内核的超参数。 |
optimizer | ‘fmin_l_bfgs_b’ or callable, default=’fmin_l_bfgs_b’ 可以是内部支持的优化器之一,用于优化由字符串指定的内核参数,也可以是作为callable传递的外部定义的优化器。如果一个可调用的被传递,它必须有签名: 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 的‘L-BFGS-B’ 算法。如果没有传递,内核的参数将保持不变。可用的内部优化器是:'fmin_l_bfgs_b' |
n_restarts_optimizer | int, default=0 用于查找使对数边际似然最大化的内核参数的优化器重启的次数。优化器的第一次运行是从内核的初始参数执行的,其余的参数(如果有的话)是从允许的ta值的空间中随机采样的log-uniform日志。如果大于0,所有的边界必须是有限的。注意,n_restarts_optimizer=0表示执行一次运行。 |
max_iter_predict | int, default=100 预测过程中近似后验的牛顿法的最大迭代次数。值越小,计算时间就越短,但结果却越差。 |
warm_start | bool, default=False 如果启用了warm-start,则使用最后一次牛顿迭代对后验模拉普拉斯逼近的解作为下一次调用_posterior_mode()的初始化。这可以在类似超参数优化问题中多次调用_posterior_mode时加快收敛速度。查看术语表。 |
copy_X_train | bool, default=True 如果为真,则在对象中存储训练数据的持久副本。否则,只存储对训练数据的引用,如果数据被外部修改,则可能导致预测发生更改。 |
random_state | int or RandomState, default=None 确定用于初始化中心的随机数生成。在多个函数调用中传递可重复的结果。参见:term: Glossary Glossary <random_state> . |
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_jobs | int, default=None 用于计算的作业数量。 None 是1,除非在joblib.parallel_backend 上下文。-1表示使用所有处理器。更多细节请参见术语表。 |
属性 | 说明 |
---|---|
kernel_ | kernel instance 用于预测的核函数。在二进制分类的情况下,内核的结构与作为参数传递的内核的结构相同,但具有优化的超参数。对于多类分类,将返回一个CompoundKernel,它包含在单一分类器和rest分类器中使用的不同内核。 |
log_marginal_likelihood_value_ | float self.kernel_.theta的对数边缘似然 |
classes_ | array-like of shape (n_classes,) 独特类标签。 |
n_classes_ | int 训练数据中的类数 |
示例
>>> 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]])
新版本0.18。
方法
方法 | 说明 |
---|---|
fit (self, X, y) |
拟合高斯过程分类模型 |
get_params (self[, deep]) |
获取这个估计器的参数。 |
log_marginal_likelihood (self[, theta, …]) |
返回训练数据的theta的对数边际似然。 |
predict (self, X) |
对测试向量X数组进行分类。 |
predict_proba (self, X) |
测试向量X的返回概率估计。 |
score (self, X, y[, sample_weight]) |
返回给定测试数据和标签的平均精度。 |
set_params (self, **params) |
设置的参数估计量。 |
__init__(self, 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)
初始化self. 请参阅help(type(self))以获得准确的说明。
fit(X, y)
拟合高斯过程分类模型
参数 | 说明 |
---|---|
X | array-like of shape (n_samples, n_features) or list of object 训练数据的特征向量或其他表示。 |
y | array-like of shape (n_samples,) 目标值,必须是二进制 |
返回值 | 说明 |
---|---|
self | returns an instance of self. |
get_params(self, deep=True)
获取这个估计器的参数。
参数 | 说明 |
---|---|
deep | bool, default=True 如果为真,将返回此估计器的参数以及包含的作为估计器的子对象。 |
返回值 | 说明 |
---|---|
params | mapping of string to any 参数名称映射到它们的值。 |
log_marginal_likelihood(self, theta=None, eval_gradient=False, clone_kernel=True)
返回训练数据的theta
的对数边际似然。
在多类分类的情况下,返回的平均对数边际似然的一个分类器和rest
。
参数 | 说明 |
---|---|
theta | array-like of shape (n_kernel_params,), default=None 核超参数的对数边际似然被评估。在多类分类的情况下,可以是复合核或单个核的超参数。在后一种情况下,所有单独的内核都被分配相同的theta值。如果没有,则预先计算log_marginal_likelihood 中 self.kernel_.theta 的返回值。 |
eval_gradient | bool, default=False 如果为真,则额外返回关于位置的核超参数的对数边际似然的梯度。注意,非二进制分类不支持梯度计算。如果为真,一定不为零。 |
clone_kernel | bool, default=True 如果为真,则复制内核属性。如果为False,则修改内核属性,但可能会导致性能改进。 |
返回值 | 说明 |
---|---|
log_likelihood | float 训练数据的对数边际似然。 |
log_likelihood_gradient | ndarray of shape (n_kernel_params,), optional 关于位置的核超参数的对数边际似然的梯度。只有当eval_gradient为真时才返回。 |
predict(self, X)
对测试向量X数组进行分类。
参数 | 说明 |
---|---|
X | array-like of shape (n_samples, n_features) or list of object 对GP进行分类评估的查询点。 |
返回值 | 说明 |
---|---|
C | ndarray of shape (n_samples,) X的预测值,值来自classes_ |
predict_proba(self, X)
测试向量X的返回概率估计。
参数 | 说明 |
---|---|
X | array-like of shape (n_samples, n_features) or list of object 对GP进行分类评估的查询点。 |
返回值 | 说明 |
---|---|
C | array-like of shape (n_samples, n_classes) 返回模型中每个类的样本概率。这些列按照排序顺序对应于类,就像它们出现在属性classes_中一样。 |
score(self, X, y, sample_weight=None)
返回给定测试数据和标签的平均精度。
在多标签分类中,这是子集精度,这是一个苛刻的指标,因为你需要对每个样本正确预测每个标签集。
参数 | 说明 |
---|---|
X | array-like of shape (n_samples, n_features) 测试样品。 |
y | array-like of shape (n_samples,) or (n_samples, n_outputs) X的真实标签。 |
sample_weight | array-like of shape (n_samples,), default=None Sample weights. |
返回值 | 说明 |
---|---|
score | float self.predict(X) wrt的平均准确度。y。 |
set_params(self, **params)
设置这个估计器的参数。
该方法适用于简单估计量和嵌套对象。后者具有形式为<component>_<parameter>
的参数,这样就让更新嵌套对象的每个组件成为了可能。
参数 | 说明 |
---|---|
**params | dict 估计器参数。 |
返回值 | 说明 |
---|---|
self | object 估计器实例。 |