问题描述
我正在尝试使用泊松似然实现 GP 回归。 我按照GPy中的例子做
poisson_likelihood = GPy.likelihoods.Poisson()
laplace_inf = GPy.inference.latent_function_inference.Laplace()
m = GPy.core.GP(X=X,Y=Y,likelihood=poisson_likelihood,inference_method=laplace_inf,kernel=kernel)
m.optimize()
#for ploting
pred_points = np.linspace(300,800,1000)[:,None]
#Predictive GP for log intensity mean and variance
f_mean,f_var = m._raw_predict(pred_points)
f_upper,f_lower = f_mean + 2*np.sqrt(f_var),f_mean - 2.*np.sqrt(f_var)
pb.figure(figsize=(10,13))
pb.plot(pred_points,np.exp(f_mean),color='blue',lw=2)
pb.fill_between(pred_points[:,0],np.exp(f_lower[:,0]),np.exp(f_upper[:,alpha=.1)
pb.errorbar(Xc.flatten(),Yc.flatten(),dyc,fmt='.',color='k',markersize=8,alpha=1.0,label='Data')
当我尝试使用 GPflow 做同样的事情时,我是通过以下方式实现的
poisson_likelihood = gpflow.likelihoods.Poisson()
m = gpflow.models.VGP((X,Y),kernel=k,num_latent_gps=1)
opt = gpflow.optimizers.Scipy()
opt_logs = opt.minimize(m.training_loss,m.trainable_variables,options=dict(maxiter=100))
#for ploting
xx = np.linspace(300,100).reshape(100,1)
mean,var = m.predict_f(xx)
plt.plot(X,Y,"kx",mew=2)
plt.plot(xx,np.exp(mean),"C0",lw=2)
plt.fill_between(
xx[:,np.exp(mean[:,0] - 1.96 * np.sqrt(var[:,0])),0] + 1.96 * np.sqrt(var[:,color="C0",alpha=0.2,)
当我使用 GP 流实现这个时,超参数没有从初始化值移动。 另外,我得到了非常不同的结果,我做错了什么吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)