我正在使用KDE的scipy实现来查找三维数据kde source的密度估计。我想知道如何在scipy.kde中获取kde的带宽矩阵。对于1D它只是一个缩放器但是对于3d它假设是3X3矩阵。但我不知道如何输出矩阵。任何人都可以帮助谢谢!
import numpy as np
from scipy import stats
data = np.array([[1, 4, 3], [2, .6, 1.2], [2, 1, 1.2],
[2, 0.5, 1.4], [5, .5, 0], [0, 0, 0],
[1, 4, 3], [5, .5, 0], [2, .5, 1.2]])
data = data.T
kde = stats.gaussian_kde(data)
minima = data.T.min(axis=0)
maxima = data.T.max(axis=0)
space = [np.linspace(mini,maxi,20) for mini, maxi in zip(minima,maxima)]
grid = np.meshgrid(*space)
coords = np.vstack(map(np.ravel, grid))
#Evaluate the KD estimated pdf at each coordinate
density = kde(coords)
答案 0 :(得分:0)
根据documentation,kde.factor
应该为您提供带宽。您还应该重新阅读方法kde.set_bandwidth
和kde.covariance_factor
- 这可能会澄清事情。
如果我正确地回忆核密度估计,那么带宽应该总是浮点数而不是高维数据的矩阵。