【发布时间】:2017-05-09 02:52:25
【问题描述】:
我正在尝试使用 numpy 和 scipy 来估计 2D 高斯混合模型的核密度估计,并估计 log KDE 相对于坐标的梯度。
我的问题是如何估计 log KDE 的梯度? st.gaussian_kde()的返回好像不能用来计算梯度?任何帮助,将不胜感激。自爆请看代码。
import numpy as np
import matplotlib.pyplot as pl
import scipy.stats as st
data = np.random.multivariate_normal((0, 0), [[0.8, 0.05], [0.05, 0.7]], 100)
x = data[:, 0]
y = data[:, 1]
xmin, xmax = -3, 3
ymin, ymax = -3, 3
xx, yy = np.mgrid[xmin:xmax:100j, ymin:ymax:100j]
positions = np.vstack([xx.ravel(), yy.ravel()])
values = np.vstack([x, y])
kernel = st.gaussian_kde(values)
f = np.reshape(kernel(positions).T, xx.shape)
【问题讨论】: