sklearn.gaussian_process.Matern?
class sklearn.gaussian_process.kernels.Matern(length_scale=1.0, length_scale_bounds=(1e-05, 100000.0), nu=1.5)
Matern內核。
這類矩陣核是徑向基函數 RBF
的推廣。它有一個額外的參數來控制結果函數的平滑度。逼近函數越小,光滑性越差。當,核變得等價于RBF核。當現代核函數與絕對指數核函數完全相同。重要的中間值是(一次可微函數)和(二次可微函數)。
核函數為:
其中為歐氏距離,為修正貝塞爾函數,為伽馬函數。參見[1],第4章4.2節,了解有關Matern內核的不同變種的詳細信息。
在用戶指南中閱讀更多內容。
新版本0.18。
參數 | 說明 |
---|---|
length_scale | float or ndarray of shape (n_features,), default=1.0 核的長度尺度。如果是浮點數,則使用各向同性核。如果是一個數組,則使用各向異性核,其中l的每個維數定義了各自特征維數的長度尺度。 |
length_scale_bounds | pair of floats >= 0 or “fixed”, default=(1e-5, 1e5) length_scale上的下界和上界。如果設置為“固定”,則“length_scale”在超參數調優期間無法更改。 |
nu | 參數nu控制學習函數的平滑性。nu越小,逼近的函數越不光滑。對于nu=inf,核等價于RBF核,對于nu=0.5的絕對指數核。重要的中間值是nu=1.5(一次可微函數)和nu=2.5(二次可微函數)。注意,nu的值不在[0.5,1.5,2.5,inf]中,這會導致相當高的計算成本(appr)。10倍)因為它們需要計算修改后的貝塞爾函數。此外,與l相比,nu保持在初始值不變,沒有經過優化。 |
屬性 | 說明 |
---|---|
anisotropic | |
bounds | 返回的對數變換界限。 |
hyperparameter_length_scale | |
hyperparameters | 返回所有超參數規范的列表。 |
n_dims | 返回內核的非固定超參數的數量。 |
requires_vector_input | 返回內核是在固定長度的特征向量上定義的還是在通用對象上定義的。 |
theta) | 返回(扁平的、對數轉換的)非固定超參數。 |
參考
Rc15b4675c755-1 卡爾·愛德華·拉斯穆森,克里斯托弗·威廉姆斯(2006)。機器學習的高斯過程。麻省理工學院出版社。
示例
>>> from sklearn.datasets import load_iris
>>> from sklearn.gaussian_process import GaussianProcessClassifier
>>> from sklearn.gaussian_process.kernels import Matern
>>> X, y = load_iris(return_X_y=True)
>>> kernel = 1.0 * Matern(length_scale=1.0, nu=1.5)
>>> gpc = GaussianProcessClassifier(kernel=kernel,
... random_state=0).fit(X, y)
>>> gpc.score(X, y)
0.9866...
>>> gpc.predict_proba(X[:2,:])
array([[0.8513..., 0.0368..., 0.1117...],
[0.8086..., 0.0693..., 0.1220...]])
方法
方法 | 說明 |
---|---|
__call__ (self, X[, Y, eval_gradient]) |
設置此參數內核。返回核k(X,Y)及其梯度。 |
clone_with_theta (self, theta) |
返回具有給定超參數theta的self的克隆。 |
diag (self, X) |
返回內核k(X,X)的對角線。 |
get_params (self[, deep]) |
獲取這個內核的參數。 |
is_stationary (self) |
返回內核是否靜止。 |
set_params (self, **params) |
設置此內核的參數。 |
__init__(self, length_scale=1.0, length_scale_bounds=(1e-05, 100000.0), nu=1.5)
初始化self. 請參閱help(type(self))以獲得準確的說明 。
__call__(self, X, Y=None, eval_gradient=False)
返回核函數k(X, Y)和它的梯度。
參數 | 說明 |
---|---|
X | ndarray of shape (n_samples_X, n_features) 返回核函數k(X, Y)的左參數 |
Y | ndarray of shape (n_samples_Y, n_features), default=None 返回的核函數k(X, Y)的正確參數。如果沒有,則計算k(X, X)。 |
eval_gradient | bool, default=False 確定關于核超參數的梯度是否確定。只有當Y沒有的時候才被支持。 |
返回值 | 說明 |
---|---|
K | ndarray of shape (n_samples_X, n_samples_Y) 內核k (X, Y) |
K_gradient | ndarray of shape (n_samples_X, n_samples_X, n_dims), optional 核函數k(X, X)關于核函數超參數的梯度。只有當eval_gradient為真時才返回。 |
property bounds
返回的對數變換界限。
返回值 | 說明 |
---|---|
bounds | ndarray of shape (n_dims, 2) 核函數超參數的對數變換界限 |
clone_with_theta(theta)
返回帶有給定超參數theta的self的克隆。
參數 | 說明 |
---|---|
theta | ndarray of shape (n_dims,) 的hyperparameters |
diag(self, X)
返回核函數k(X, X)的對角線。
該方法的結果與np.diag(self(X))相同;但是,由于只計算對角,因此可以更有效地計算它。
參數 | 說明 |
---|---|
X | array-like of shape (n_samples,) 返回核函數k(X, Y)的左參數 |
返回值 | 說明 |
---|---|
K_diag | ndarray of shape (n_samples_X,) 核k(X, X)的對角線 |
get_params(self, deep=True)
獲取這個內核的參數。
參數 | 說明 |
---|---|
deep | bool, default=True 如果為真,將返回此估計器的參數以及包含的作為估計器的子對象。 |
返回值 | 說明 |
---|---|
params | dict 參數名稱映射到它們的值。 |
property hyperparameters
返回所有超參數的列表。
is_stationary(self)
返回內核是否靜止。
property n_dims
返回內核的非固定超參數的數量。
property requires_vector_input
返回內核是在固定長度的特征向量上定義的還是在通用對象上定義的。向后兼容性的默認值為True。
set_params(self, **params)
設置這個內核的參數。
該方法適用于簡單估計量和嵌套對象(如pipline)。后者具有形式為<component>_<parameter>
的參數,這樣就讓更新嵌套對象的每個組件成為了可能。
返回值 | 說明 |
---|---|
self | - |
Examples using sklearn.gaussian_process.kernels.Matern
property theta
返回(扁平的、對數轉換的)非固定超參數。
注意,theta通常是內核超參數的對數變換值,因為這種搜索空間的表示更適合超參數搜索,因為像長度尺度這樣的超參數自然存在于對數尺度上。
返回值 | 說明 |
---|---|
theta | ndarray of shape (n_dims,) 核函數的非固定、對數變換超參數 |