我需要使用sci-kit学习库在Python中实现GPR(高斯过程回归)。
我的输入X有两个功能。 防爆。 X = [种族,BMI]。输出是一维y = [age_expectancy]
我想使用两个内核; RBF和Matern,使得RBF使用'种族'功能,而Matern使用'年龄'功能。 我尝试了以下方法:
X = np.matrix([[1.,2], [3.,4], [5.,1], [6.,5],[4, 7.],[ 9,8.], [1.,2], [3.,4], [5.,1], [6.,5],[4, 7.],[ 9,8.],[1.,2], [3.,4], [5.,1], [6.,5],[4, 7.],[ 9,8.]]).T
y=[84, 42, 47, 55, 25, 78, 52, 25, 75, 22, 45, 45, 88, 56, 77, 58, 48, 79]
kernel = R(X[0]) * M(X[1])
gp = GaussianProcessRegressor(kernel=kernel)
gp.fit(X, y)
但这会产生错误'ValueError:找到输入变量数不一致的样本:[2,18]'。
我尝试了几种方法但找不到解决方案。真的很感激,如果有人可以提供帮助。
答案 0 :(得分:0)
我看不到你的整个代码,但这是我的建议。
似乎您的输入是矩阵和列表。矩阵 X 的形状为(2,18),列表的大小 y 18 。
因此,我建议将列表转换为明确定义为(1,18)的形状的数组。运行这个:
y = np.reshape(y,(1,18))
在gp.fit(X, y)
之前,让我知道它是否有效:)
答案 1 :(得分:0)
你为什么在X上做.T
?
这会将X的形状从(18,2)改变为(2,18),从而改变错误。
以下内容对我有用(刚刚从X末尾删除了.T
):
X = np.matrix([[1.,2], [3.,4], [5.,1], [6.,5], [4, 7.], [9,8.], [1.,2],
[3.,4], [5.,1], [6.,5], [4,7.], [ 9,8.], [1.,2], [3.,4],
[5.,1], [6.,5], [4,7.], [9,8.]])
y = [84, 42, 47, 55, 25, 78, 52, 25, 75, 22, 45, 45, 88, 56, 77,
58, 48, 79]
gp.fit(X, y)