具有非高斯似然和Laplace推理功能的多任务/多输出GPy共区域回归

问题描述

我想在GPy中执行共区域回归,但是我使用了伯努利似然法,然后估计作为高斯,我使用拉普拉斯推断。下面的代码显示了我通常如何使用此设置(使用我的自定义PjkRbf内核)运行单输出GP:

likelihood  = GPy.likelihoods.Bernoulli()
laplace_inf = GPy.inference.latent_function_inference.Laplace()
kernel      = GPy.kern.PjkRbf(X.shape[1])
m = GPy.core.GP(X,Y,kernel=kernel,likelihood=likelihood,inference_method=laplace_inf)

现在,我正在尝试运行相同的设置,但是作为多输出。这是我无法做到的。

我尝试将GPCoregionalizedRegression类与ICM内核一起使用,如以下代码所示:

likelihood1  = GPy.likelihoods.Bernoulli()
likelihood2 = GPy.likelihoods.Bernoulli()
laplace_inf = GPy.inference.latent_function_inference.Laplace()
K = GPy.kern.PjkRbf(X.shape[1])
icm = GPy.util.multIoUtput.ICM(input_dim=2,num_outputs=2,kernel=K)
m = GPy.models.GPCoregionalizedRegression([X,X],[Y1,Y2],kernel=icm,likelihoods_list=[likelihood1,likelihood2])

运行此代码将引发AssertionError,具有很长的堆栈跟踪,但是最后一部分显示了以下内容。可能性不能断言为高斯。

~\Anaconda3\lib\site-packages\GPy\likelihoods\mixed_noise.py in gaussian_variance(self,Y_Metadata)
     22 
     23     def gaussian_variance(self,Y_Metadata):
---> 24         assert all([isinstance(l,Gaussian) for l in self.likelihoods_list])
     25         ind = Y_Metadata['output_index'].flatten()
     26         variance = np.zeros(ind.size)

AssertionError: 

这是因为我无法将拉普拉斯推断传递给GPCoregionalizedRegression模型。

任何人都可以提供有关如何解决此问题的建议,或者是否存在可以使用伯努利似然法和拉普拉斯推断方法进行多输出回归的模型?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...