带噪声的高斯过程模型:ValueError:nugget必须是标量或长度为n_samples的数组

时间:2016-03-01 02:08:06

标签: python arrays numpy scikit-learn gaussian

我正在使用带噪声的高斯过程构建分类模型 - 我不明白为什么失败时会出现值错误

我有一个大约10%的数据集标记为1或0的目标。我试图预测其他90%的概率为1.

我已经使用sklearn将标记的集合拆分为训练集和测试集。

X是feature_training,它是一个np.array     X.shape     (54.9)

y是feature_target,它是一个np.array     y.shape     (54.1)

两者都是浮点数,噪音计算如下:

dy = 0.5 + 1.0 * np.random.random(y.shape)
noise = np.random.normal(0, dy)
y = (y + noise)

y.shape
(54,1)

nugget的类型是numpy.ndarray和shape(54,1)

在我使用的高斯过程模型中 -

gp = GaussianProcess(corr='squared_exponential', theta0=1e-1,
                 thetaL=1e-3, thetaU=1,
                 nugget=(dy / y) ** 2,
                 random_start=100)

gp.fit(X, y) 

失败,原因是:ValueError:nugget必须是标量或长度为n_samples的数组

似乎X,y,nugget都是numpy.ndarray类型和正确的形状。我认为nugget的长度为n_samples(54),所以它应该具有相同的长度。

有什么明显的东西让我失踪吗?

1 个答案:

答案 0 :(得分:0)

您的y必须是形状(n,)的矢量,而不是形状(n,1)的数组。您可以使用

解决此问题
y = y.reshape((len(y),)