繁体   English   中英

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

[英]Gaussian Process Model with Noise: ValueError: nugget must be either a scalar or array of length n_samples

我正在使用带有噪声的高斯过程建立分类模型-我不明白为什么它会因值错误而失败

我有一个约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)

块的类型为numpy.ndarray和形状(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:块必须为标量或长度为n_samples的数组

看起来X,y,nugget都是numpy.ndarray类型,并且形状正确。 我认为矿块的长度为n_samples(54),因此其长度应相等。

有什么明显的我想念的东西吗?

您的y必须是形状(n,)的向量(n,)而不是形状(n,1)的数组。 您可以使用以下方法解决此问题

y = y.reshape((len(y),)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM