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 估計器實例。 |