Python pyGPs : IndexError for regression with multi-dimensional x and z, setData(x,y) 和预测(z)

标签 python multidimensional-array machine-learning regression

我正在尝试编写代码来使用 pyGP 执行回归,其中我的训练数据 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']            # training data
y = demoData['y']            # training target
z = demoData['xstar']        # test data
# Start from a new model 
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'] # training data
y = demoData['y'] # training target
z = demoData['xstar'] # test data
# Start from a new model 
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-covariances

IndexError: 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

感谢您指出这一点!马里昂

关于Python pyGPs : IndexError for regression with multi-dimensional x and z, setData(x,y) 和预测(z),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34688502/

相关文章:

python - Sqlalchemy 一对多插入

python - 防止 IOError : [Errno 5] Input/output error when running without stdout

Python 客户端支持在 Amazon EMR 上运行 Hive

python - 负面实例的机器学习问题

python Popen.wait() 在多个管道上死锁 - 为什么?

php - 减少数组信息

c - 在 C 中填充动态二维数组时出现段错误

php - 数组值仅返回第一个字符和额外值

machine-learning - 使用基于规则的方法而不是适当的算法进行二元分类

python - 使用 RandomizedSearchCV 在 sklearn 中进行超参数调整需要花费大量时间