Python pyGPs: 使用多维x和z进行回归时的IndexError,setData(x,y)和predict(z)

我正在尝试编写代码,使用pyGPs进行回归,我的训练数据x(以及测试数据z)是多维的。例如,一个训练样本将是x:(0.2, 0.5)和y:(0.7)。我首先尝试了一些来自”demo_GPR_FITC.py”的代码,其中x和z是一维的:

demoData = np.load('regression_data.npz') x = demoData['x']            # 训练数据y = demoData['y']            # 训练目标z = demoData['xstar']        # 测试数据# 从一个新模型开始 model = pyGPs.GPR_FITC()model.setData(x, y)#model.optimize()     model.predict(z)model.plot()

这段代码运行正常,因此我尝试运行了一个扩展了x和z维度到二维的演示,如下所示:

我将x转换为x2,因此当x的一个元素为0.2时,x2的元素将为[0.2, 0.2]。

所以x的形状为(20L, 1L),而x2的形状为(20L, 2L)。我对测试数据z也做了同样的事情,并尝试设置数据和预测。以下是我使用的代码:

demoData = np.load('regression_data.npz')x = demoData['x'] # 训练数据y = demoData['y'] # 训练目标z = demoData['xstar'] # 测试数据# 从一个新模型开始 model = pyGPs.GPR_FITC()x2 = []for i in range (len(x)):    x2.append([x[i][0], x[i][0]])x2 = np.asarray(x2)z2 = []for i in range (len(z)):    z2.append([z[i][0], z[i][0]])z2 = np.asarray(z2)model.setData(x2, y)#model.optimize()        model.predict(z2)model.plot()

通过运行上述具有多维x和z的代码,我得到了以下错误:

Traceback (most recent call last):  File "<ipython-input-176-8b27178cc782>", line 22, in <module>    model.predict(z2)  File "C:\Program Files\WinPython-64bit-2.7.10.2\python-2.7.10.amd64\lib\site-packages\pyGPs\Core\gp.py", line 395, in predict    Ks  = covfunc.getCovMatrix(x=x[nz,:], z=xs[id,:], mode='cross')   # cross-covariancesIndexError: index 20 is out of bounds for axis 0 with size 20

现在我的问题是,我是否需要以其他方式创建x2和z2?或者演示中的代码不适合多维的x和z,如果是这样,是否有其他方法可以用于此目的?

提前感谢!


回答:

这是一个索引错误。现在已经修复。请从github获取pyGPs,或者在gp.py中添加以下内容:

if isinstance(covfunc, FITCOfKernel):     Ks = covfunc.getCovMatrix(x=x, z=xs[id,:], mode='cross')   #   cross-covariances    Ks = Ks[nz,:]else:    Ks  = covfunc.getCovMatrix(x=x[nz,:], z=xs[id,:], mode='cross')   # cross-covariances

感谢指出这个问题!Marion

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注