我有一个二维核密度函数,它由
sklearn.neighbors.KernelDensity
拟合。如您所知,这个函数给我们的是概率密度,而不是某个值的概率。如果您查看下图,您会发现最高密度值大约为 25,但这不是概率。但是,我想要的是特定点的概率。有什么办法可以得到某个点的概率吗?如何将密度函数转换为概率?
from sklearn.neighbors import KernelDensity
kde = KernelDensity(kernel='gaussian', bandwidth=0.05)
kde.fit(data)
x = np.linspace(0, 1, 50)
y = np.linspace(0, 1, 50)
xx, yy = np.meshgrid(x, y)
domain_xy = np.concatenate([xx.ravel().reshape(-1, 1), yy.ravel().reshape(-1, 1)],axis=1)
z = np.exp(kde.score_samples(domain_xy))
# z = np.exp(z)
%matplotlib inline
plt.scatter(domain_xy[:,0], domain_xy[:,1], c=z, cmap='jet')
plt.colorbar()