以二维特征数组作为Python

时间:2018-06-06 23:29:00

标签: python scikit-learn gaussian kernel

我需要使用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]'。

我尝试了几种方法但找不到解决方案。真的很感激,如果有人可以提供帮助。

2 个答案:

答案 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)