如何在核密度估计中显示带宽矩阵?

时间:2015-07-04 16:38:17

标签: python scipy bandwidth kernel-density

我正在使用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)

1 个答案:

答案 0 :(得分:0)

根据documentationkde.factor应该为您提供带宽。您还应该重新阅读方法kde.set_bandwidthkde.covariance_factor - 这可能会澄清事情。 如果我正确地回忆核密度估计,那么带宽应该总是浮点数而不是高维数据的矩阵。