gpt4 book ai didi

python - 如何在核密度估计中找到局部最大值?

转载 作者:太空宇宙 更新时间:2023-11-03 11:01:45 25 4
gpt4 key购买 nike

我正在尝试使用核密度估计器 (KDE) 制作过滤器(以去除离群值和噪声)。我在我的 3D (d=3) 数据点中应用了 KDE,这给了我概率密度函数 (PDF) f(x)。现在我们知道密度估计的局部最大值 f(x) 定义了数据点簇的中心。所以我的想法是定义合适的 f(x) 来确定这些集群。

我的问题是如何以及哪种方法更适合在 f(x) 中找到局部最大值的目的。如果有人能给我提供一些示例代码/想法,我将非常感激。

这里是找到在 3D 数据中给出 f(x) 的 KDE 的代码。

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)

最佳答案

这是一个简短的函数,演示了如何估计最大值。注意:no_samples 的数量越多,最大值就越准确。

from scipy.stats import gaussian_kde
import numpy as np

def estimate_maxima(data):
kde = gaussian_kde(data)
no_samples = 10
samples = np.linspace(min(data), max(data), no_samples)
probs = kde.evaluate(samples)
maxima_index = probs.argmax()
maxima = samples[maxima_index]

return maxima

关于python - 如何在核密度估计中找到局部最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31198020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com