我正在寻找一种获取数据集的内核密度函数并将其绘制为任意数据点的方法。使用Scipy stats模块,我想到了以下代码:
import numpy as np
import scipy.stats as st
def get_pdf(data):
a = np.array(data)
ag = st.gaussian_kde(a)
x = np.linspace(0, max(data), max(data)*10)
y = ag(x)
return x, y
这给出了预期的结果,但是当数据集大小很大时,性能却很差。
我发现fastkde
是一种用于快速内核密度估计的实现。但是我想不出一种使用Scipy stats KDE的方法来使用它。
有人可以给我一些见识吗?
谢谢
答案 0 :(得分:0)
您可能正在寻找这样的东西:
from fastkde.fastKDE import pdf
def get_pdf(data):
y, x = pdf(data)
return x, y
请注意,通常,fastKDE.pdf()
返回pdf, axes
(PDF和PDF的轴,类似于直方图的hist, bins
)。
如果有多个输入变量,则axes
变量是轴的列表,每个轴对应一个输入变量。