當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python sklearn GaussianProcessClassifier用法及代碼示例


本文簡要介紹python語言中 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。

在內部,拉普拉斯近似用於通過高斯近似非高斯後驗。

目前,實施僅限於使用物流鏈接函數。對於多類分類,安裝了多個二元one-versus剩餘分類器。請注意,此類並未實現真正的多類拉普拉斯近似。

在用戶指南中閱讀更多信息。

參數

kernel內核實例,默認=無

指定 GP 協方差函數的內核。如果 None 被傳遞,內核“1.0 * RBF(1.0)”被用作默認值。請注意,內核的超參數在擬合期間進行了優化。

optimizer‘fmin_l_bfgs_b’ 或可調用,默認='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_optimizer整數,默認=0

優化器重新啟動的次數,用於查找最大化log-marginal 可能性的內核參數。優化器的第一次運行是從內核的初始參數執行的,其餘的(如果有的話)來自 thetas 從允許的 theta-values 的空間中隨機采樣 log-uniform。如果大於 0,則所有邊界都必須是有限的。請注意,n_restarts_optimizer=0 意味著執行了一次運行。

max_iter_predict整數,默認=100

牛頓法中用於在預測期間逼近後驗的最大迭代次數。較小的值將以更差的結果為代價減少計算時間。

warm_start布爾,默認=假

如果啟用warm-starts,則在後驗模式的拉普拉斯近似上的最後一次牛頓迭代的解將用作_posterior_mode()的下一次調用的初始化。當 _posterior_mode 在與超參數優化類似的問題上被多次調用時,這可以加快收斂速度。請參閱詞匯表。

copy_X_train布爾,默認=真

如果為 True,則將訓練數據的持久副本存儲在對象中。否則,隻存儲對訓練數據的引用,如果數據被外部修改,這可能會導致預測發生變化。

random_stateint、RandomState 實例或無,默認=無

確定用於初始化中心的隨機數生成。傳遞 int 以獲得跨多個函數調用的可重現結果。請參閱詞匯表。

multi_class{‘one_vs_rest’, ‘one_vs_one’},默認='one_vs_rest'

指定如何處理多類分類問題。支持‘one_vs_rest’ 和‘one_vs_one’。在‘one_vs_rest’中,為每個類安裝一個二元高斯過程分類器,經過訓練將此類與其他類分開。在‘one_vs_one’中,為每一對類安裝一個二元高斯過程分類器,該分類器經過訓練以分離這兩個類。這些二元預測器的預測被組合成多類預測。請注意,‘one_vs_one’ 不支持預測概率估計。

n_jobs整數,默認=無

用於計算的作業數量:並行計算指定的多類問題。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有處理器。有關詳細信息,請參閱詞匯表。

屬性

base_estimator_Estimator 實例

使用觀察到的數據定義似然函數的估計器實例。

kernel_內核實例

返回基本估計器的內核。

log_marginal_likelihood_value_浮點數

self.kernel_.theta的log-marginal-likelihood

classes_形狀類似數組 (n_classes,)

唯一的類標簽。

n_classes_int

訓練數據中的類數

n_features_in_int

擬合期間看到的特征數。

feature_names_in_ndarray 形狀(n_features_in_,)

擬合期間看到的特征名稱。僅當 X 具有全為字符串的函數名稱時才定義。

例子

>>> 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]])

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.gaussian_process.GaussianProcessClassifier。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。