Я хочу использовать регрессию гребня ядра в sklearn с гауссовым возведенным в степень ядром. Который имеет форму .
Для этого я хочу использовать реализованные ядра sklearn, так как это продукт обычного ядра RBF с линейным ядром, оцененным в ядре RBF. Поэтому я определяю свое собственное ядро следующим образом:
import numpy as np
from sklearn.kernel_ridge import KernelRidge
from sklearn.metrics import pairwise
def gaussian_exponentiated_kernel(X, Y=None, gamma = None, beta = None):
return pairwise.rbf_kernel(X, Y, gamma) * pairwise.rbf_kernel(beta * pairwise.linear_kernel(X, Y))
Затем я использую фиктивный код для KRR в sklearn:
n_samples, n_features = 10, 5
rng = np.random.RandomState(0)
y = rng.randn(n_samples)
X = rng.randn(n_samples, n_features)
clf = KernelRidge(kernel=gaussian_exponentiated_kernel)
clf.fit(X, y)
Затем я получаю следующее сообщение об ошибке, которое я не до конца понимаю :
ValueError: Expected 2D array, got 1D array instead:
array=[0.14404357 1.45427351 0.76103773 0.12167502 0.44386323].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
Оценка функции ядра для массивов соответствующего размера работает нормально, поэтому я не вижу, откуда возникает проблема измерения.