我遇到以下问题: 我在2D空间中有(大)不均匀分布点$(X_i,Y_i)$的样本。我想确定分布密度的局部极值。
KernelDensity函数是否允许估算样本外点的样本密度?
如果是,我找不到正确的语法?
以下是一个例子:
import numpy as np
import pandas as pd
mean0=[0,0]
cov0=[[1,0],[0,1]]
mean1=[3,3]
cov1=[[1,0.2],[0.2,1]]
A=pd.DataFrame(np.vstack((np.random.multivariate_normal(mean0, cov0, 5000),np.random.multivariate_normal(mean1, cov1, 5000))))
A.columns=['X','Y']
A.describe()
from sklearn.neighbors import KernelDensity
kde = KernelDensity(bandwidth=0.04, metric='euclidean',
kernel='gaussian', algorithm='ball_tree')
kde.fit(A)
如果我进行此查询
kde.score_samples([(0,0)])
我得到一个负数,显然不是密度!!
阵列([ - 2.88134574])
我不知道它是否是正确的方法。我想使用该函数来使用优化器来获取局部极值。 (你会推荐哪个库/功能?)
编辑:是的,这是一个对数密度,而不是密度,所以它可以是负数