我想在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))
然后我在sklearn中将伪代码用于KRR:
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.
在匹配大小的数组上评估内核功能可以很好地工作,因此我看不到尺寸问题的来源。