各向同性平方指数核的numpy实现
我遇到了一个针对高斯过程的从头开始的实现: 在这里,各向同性平方指数核用numpy实现。它看起来像: 实施计划如下:各向同性平方指数核的numpy实现,numpy,machine-learning,scipy,Numpy,Machine Learning,Scipy,我遇到了一个针对高斯过程的从头开始的实现: 在这里,各向同性平方指数核用numpy实现。它看起来像: 实施计划如下: def kernel(X1, X2, l=1.0, sigma_f=1.0): sqdist = np.sum(X1**2, 1).reshape(-1, 1) + np.sum(X2**2, 1) - 2 * np.dot(X1, X2.T) return sigma_f**2 * np.exp(-0.5 / l**2 * sqdist) 与Nando d
def kernel(X1, X2, l=1.0, sigma_f=1.0):
sqdist = np.sum(X1**2, 1).reshape(-1, 1) + np.sum(X2**2, 1) - 2 * np.dot(X1, X2.T)
return sigma_f**2 * np.exp(-0.5 / l**2 * sqdist)
与Nando de Freitas的实施相一致:
但是,我不太确定这个实现如何匹配所提供的公式,特别是在sqdist部分。在我看来,这是错误的,但它是有效的(并提供了与scipy的cdist相同的结果,即平方欧几里德距离)。为什么我认为这是错误的?如果你把两个矩阵的乘积相乘,得到
它等于向量x_i的标量或nxn矩阵,具体取决于是否将x_i定义为列向量。然而,该实现返回一个带有平方值的nx1向量
我希望任何人都能对此有所了解。我发现:实现是正确的。我只是不知道模糊符号(在我看来)有时在ML上下文中使用。要实现的是一个距离矩阵,矩阵a的每一行向量都要与矩阵B的行向量进行比较,以推断协方差矩阵,而不是(正如我所猜测的)两个矩阵/向量之间的直接距离