Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python sklearn高斯过程的对数边际似然计算为正?_Python_Scikit Learn_Gaussian Process - Fatal编程技术网

Python sklearn高斯过程的对数边际似然计算为正?

Python sklearn高斯过程的对数边际似然计算为正?,python,scikit-learn,gaussian-process,Python,Scikit Learn,Gaussian Process,我正在检查高斯过程的对数边际似然(GP)的实现。该实现基于算法2.1,为了方便起见,我还附加了它的快照: 然而,我经常遇到一些情况,用这个公式计算的对数似然是正的。一个具体示例是以下示例代码: import numpy as np from scipy.linalg import cholesky, cho_solve, solve_triangular from sklearn.gaussian_process.kernels import Matern kernel=Matern(nu

我正在检查高斯过程的对数边际似然(GP)的实现。该实现基于算法2.1,为了方便起见,我还附加了它的快照:

然而,我经常遇到一些情况,用这个公式计算的对数似然是正的。一个具体示例是以下示例代码:

import numpy as np 
from scipy.linalg import cholesky, cho_solve, solve_triangular
from sklearn.gaussian_process.kernels import Matern

kernel=Matern(nu=2.5)
x = np.array([1, 2, 3]).reshape(-1,1)
y = np.array([0.1, 0.2, 0.3])
noise=0
amp2=0.05 

K = kernel(x)

cov = amp2 * (K + 0*np.eye(x.shape[0])) 
cov[np.diag_indices_from(cov)] += noise
L = cholesky(cov, lower=True)
alpha = cho_solve((L, True), y)
logprob = -0.5 * np.dot(y, alpha) - np.log(np.diag(L)).sum() - \
      x.shape[0] / 2. * np.log(2 * np.pi)
print(logprob) # Result: 1.1359631938135135
我认为GP
logpr(y | x,M)
的对数边际可能性应该总是非正的。为什么上面的代码会产生正的对数边际可能性


谢谢大家!

嘿,我对你的问题没有答案,但可能与此有关吗?我还发现sklearn计算lml和gpml Hi@khuynh的方法之间存在一些差异,感谢链接,尽管我已经有一段时间不记得我是如何解决这个问题的了。希望你也能解决你的案子。有没有可能@thanhtang记得你是怎么解决的?