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


Python sklearn GaussianProcessRegressor用法及代碼示例


本文簡要介紹python語言中 sklearn.gaussian_process.GaussianProcessRegressor 的用法。

用法:

class sklearn.gaussian_process.GaussianProcessRegressor(kernel=None, *, alpha=1e-10, optimizer='fmin_l_bfgs_b', n_restarts_optimizer=0, normalize_y=False, copy_X_train=True, random_state=None)

高斯過程回歸 (GPR)。

該實現基於[1]的算法2.1。

除了標準 scikit-learn 估計器 API 之外,GaussianProcessRegressor

  • 允許在沒有事先擬合的情況下進行預測(基於先驗 GP)

  • 提供了一種額外的方法 sample_y(X) ,它評估在給定輸入處從 GPR(先驗或後驗)抽取的樣本

  • 公開了一個方法 log_marginal_likelihood(theta) ,該方法可以在外部用於其他選擇超參數的方法,例如,通過馬爾可夫鏈蒙特卡羅。

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

參數

kernel內核實例,默認=無

指定 GP 協方差函數的內核。如果 None 被傳遞,內核ConstantKernel(1.0, constant_value_bounds="fixed" * RBF(1.0, length_scale_bounds="fixed")用作默認值。請注意,除非邊界標記為“fixed”,否則在擬合期間會優化內核超參數。

alphafloat 或 ndarray 形狀 (n_samples,),默認 = 1e-10

在擬合期間添加到核矩陣對角線的值。這可以通過確保計算值形成正定矩陣來防止擬合過程中出現潛在的數值問題。它也可以解釋為額外的高斯測量噪聲對訓練觀察的方差。請注意,這與使用 WhiteKernel 不同。如果傳遞一個數組,它必須具有與用於擬合的數據相同的條目數,並用作datapoint-dependent 噪聲級別。允許將噪聲級別直接指定為參數主要是為了方便並與 Ridge 保持一致。

optimizer“fmin_l_bfgs_b” 或可調用,默認=”fmin_l_bfgs_b”

可以是用於優化內核參數的內部支持的優化器之一,由字符串指定,也可以是作為可調用傳遞的外部定義的優化器。如果傳遞了可調用對象,則它必須具有簽名:

def optimizer(obj_func, initial_theta, bounds):
    # * 'obj_func': the objective function to be minimized, which
    #   takes the hyperparameters theta as a 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 意味著執行了一次運行。

normalize_y布爾,默認=假

是否通過移除均值並縮放到 unit-variance 來規範化目標值 y。對於使用zero-mean、unit-variance 先驗的情況,建議使用此方法。請注意,在此實現中,標準化在報告 GP 預測之前被反轉。

copy_X_train布爾,默認=真

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

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

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

屬性

X_train_形狀類似數組 (n_samples, n_features) 或對象列表

訓練數據的特征向量或其他表示(預測也需要)。

y_train_形狀為 (n_samples,) 或 (n_samples, n_targets) 的類似數組

訓練數據中的目標值(預測也需要)。

kernel_內核實例

用於預測的內核。內核的結構與作為參數傳遞的相同,但具有優化的超參數。

L_形狀類似數組 (n_samples, n_samples)

X_train_ 中內核的下三角 Cholesky 分解。

alpha_形狀類似數組 (n_samples,)

核空間中訓練數據點的對偶係數。

log_marginal_likelihood_value_浮點數

self.kernel_.theta 的 log-marginal-likelihood 。

n_features_in_int

擬合期間看到的特征數。

feature_names_in_ndarray 形狀(n_features_in_,)

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

參考

1

拉斯穆森,卡爾·愛德華。 “機器學習中的高斯過程。”機器學習暑期學校。施普林格,柏林,海德堡,2003.

例子

>>> from sklearn.datasets import make_friedman2
>>> from sklearn.gaussian_process import GaussianProcessRegressor
>>> from sklearn.gaussian_process.kernels import DotProduct, WhiteKernel
>>> X, y = make_friedman2(n_samples=500, noise=0, random_state=0)
>>> kernel = DotProduct() + WhiteKernel()
>>> gpr = GaussianProcessRegressor(kernel=kernel,
...         random_state=0).fit(X, y)
>>> gpr.score(X, y)
0.3680...
>>> gpr.predict(X[:2,:], return_std=True)
(array([653.0..., 592.1...]), array([316.6..., 316.6...]))

相關用法


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