Мэтерн
- классsklearn.gaussian_process.kernels.Matern(length_scale=1.0, length_scale_bounds=(1e-05, 100000.0), nu=1.5)[source]
-
Ядро Матерна.
Класс ядер Матерна является обобщением ядра
RBF. Он имеет дополнительный параметр \(\nu\), который управляет гладкостью результирующей функции. Чем меньше \(\nu\), тем менее гладкой является приближённая функция. При \(\nu\rightarrow\infty\), ядро становится эквивалентным ядруRBF. Когда \(\nu = 1/2\), ядро Матерна становится идентичным абсолютному экспоненциальному ядру. Важными промежуточными значениями являются \(\nu=1.5\) (функции с однократной дифференцируемостью) и \(\nu=2.5\) (функции с двукратной дифференцируемостью).Ядро задаётся следующим образом:
\[k(x_i, x_j) = \frac{1}{\Gamma(\nu)2^{\nu-1}}\Bigg( \frac{\sqrt{2\nu}}{l} d(x_i , x_j ) \Bigg)^\nu K_\nu\Bigg( \frac{\sqrt{2\nu}}{l} d(x_i , x_j )\Bigg)\]где \(d(\cdot,\cdot)\) — евклидово расстояние, \(K_{\nu}(\cdot)\) — модифицированная функция Бесселя, а \(\Gamma(\cdot)\) — гамма-функция. Подробнее о различных вариантах ядра Матерна см. [1], глава 4, раздел 4.2.
Подробнее см. в Руководстве пользователя.
Добавлен в версии 0.18.
- Параметры:
-
- length_scalefloat или ndarray формы (n_features,), по умолчанию=1.0
-
Масштаб длины ядра. Если float, используется изотропное ядро. Если массив, используется анизотропное ядро, где каждый элемент l определяет масштаб длины соответствующего измерения признака.
- length_scale_boundsпара из чисел >= 0 или “fixed”, по умолчанию=(1e-5, 1e5)
-
Нижняя и верхняя границы для ‘length_scale’. Если установлено “fixed”, ‘length_scale’ нельзя изменить во время подбора гиперпараметров.
- nufloat, по умолчанию=1.5
-
Параметр nu, контролирующий гладкость изученной функции. Меньшее nu, тем менее гладкой является приближённая функция. При nu=бесконечность, ядро становится эквивалентным ядру RBF, а при nu=0.5 — абсолютному экспоненциальному ядру. Важными промежуточными значениями являются nu=1.5 (функции с однократной дифференцируемостью) и nu=2.5 (функции с двукратной дифференцируемостью). Обратите внимание, что значения nu, не входящие в [0.5, 1.5, 2.5, бесконечность], приводят к значительно большей вычислительной сложности (примерно в 10 раз больше), так как требуют вычисления модифицированной функции Бесселя. Кроме того, в отличие от l, nu сохраняется неизменным и не оптимизируется.
Ссылки
Примеры
>>> 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__(X, Y=None, eval_gradient=False)[source]
-
Возвращает ядро k(X, Y) и, необязательно, его градиент.
- Параметры:
-
- Xndarray формы (n_samples_X, n_features)
-
Левый аргумент возвращаемого ядра k(X, Y)
- Yndarray формы (n_samples_Y, n_features), по умолчанию=None
-
Правый аргумент возвращаемого ядра k(X, Y). Если None, вычисляется k(X, X).
- eval_gradientbool, по умолчанию=False
-
Определяет, вычисляется ли градиент по отношению к логарифму гиперпараметра ядра. Поддерживается только когда Y равно None.
- Возвращает:
-
- Kndarray формы (n_samples_X, n_samples_Y)
-
Ядро k(X, Y)
- K_gradientndarray формы (n_samples_X, n_samples_X, n_dims), необязательно
-
Градиент ядра k(X, X) по отношению к логарифму гиперпараметра ядра. Возвращается только когда
eval_gradientравно True.
- свойствоbounds
-
Возвращает логарифмически преобразованные границы theta.
- Возвращает:
-
- boundsndarray формы (n_dims, 2)
-
Логарифмически преобразованные границы гиперпараметров ядра theta
- clone_with_theta(theta)[source]
-
Возвращает копию self с заданными гиперпараметрами theta.
- Параметры:
-
- thetandarray формы (n_dims,)
-
Гиперпараметры
- diag(X)[source]
-
Возвращает диагональ ядра k(X, X).
Результат этого метода идентичен np.diag(self(X)); однако он может быть вычислен более эффективно, так как вычисляется только диагональ.
- Параметры:
-
- Xndarray формы (n_samples_X, n_features)
-
Левый аргумент возвращаемого ядра k(X, Y)
- Возвращает:
-
- K_diagndarray формы (n_samples_X,)
-
Диагональ ядра k(X, X)
- get_params(deep=True)[source]
-
Получить параметры этого ядра.
- Параметры:
-
- deepbool, по умолчанию=True
-
Если True, вернёт параметры для данного оценщика и содержащихся под-объектов, которые являются оценщиками.
- Возвращает:
-
- paramsdict
-
Имена параметров сопоставлены с их значениями.
- свойствоhyperparameters
-
Возвращает список всех спецификаций гиперпараметров.
- is_stationary()[source]
-
Возвращает, является ли ядро стационарным.
- свойствоn_dims
-
Возвращает количество нефиксированных гиперпараметров ядра.
- свойствоrequires_vector_input
-
Возвращает, определено ли ядро на векторах признаков фиксированной длины или общих объектах. По умолчанию True для обратной совместимости.
- set_params(**params)[source]
-
Установить параметры этого ядра.
Метод работает как с простыми ядрами, так и с вложенными ядрами. Последние имеют параметры вида
<component>__<parameter>, чтобы можно было обновить каждый компонент вложенного объекта.- Возвращает:
-
- self
- propertytheta
-
Возвращает (уплощенные, логарифмически преобразованные) нефиксированные гиперпараметры.
Обратите внимание, что theta обычно являются логарифмически преобразованными значениями гиперпараметров ядра, поскольку такое представление пространства поиска более пригодно для поиска гиперпараметров, так как такие гиперпараметры, как масштабы, естественно находятся на логарифмической шкале.
- Возвращает:
-
- thetandarray формы (n_dims,)
-
Нефиксированные, логарифмически преобразованные гиперпараметры ядра
Примеры из галереи
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.gaussian_process.kernels.Matern.html