核密度估计与抽样。

kalep的Python项目详细描述


kalepy:核密度估计与抽样

Build Statuscodecov

开发:Build Status

此包对多维数据执行kde操作,以便:1)计算估计的pdf(概率分布函数),以及2)从这些pdf重新采样新数据

安装

来自PYPI(即通过PIP)

pip install kalepy

来自源(例如用于开发)

git clone https://github.com/lzkelley/kalepy.git
pip install -e kalepy/

在这种情况下,可以很容易地更新包,将其更改到源目录中,拉入并重新生成:

cd kalepy
git pull
pip install -e .
# Optional: run unit tests (using the `nosetests` package)
nosetests

示例

使用“反射”边界条件改善边界

处的pdf重建

没有反射,kde(红线)明显低估了这种均匀分布(灰色直方图)的边缘。从kde重新采样时,新样本(红地毯和直方图)将绘制在原始分布边缘之外。反射边界条件可以更好地估计pdf,并将新样本约束在边界内。

importkalepyaskale# here `data` has shape (N,) for N data pointskde=kale.KDE(data)grid=np.linspace(-0.5,2.5,1000)# choose reflection boundariesboundaries=[0.0,2.0]pdf=kde.pdf(grid,reflect=boundaries)samples=kde.resample(100,reflect=boundaries)

1D Samples with Reflection

这也适用于多个维度。在每个维度中,反射边界可以被应用在两侧(例如X轴)上,或者仅在一侧(例如Y轴)上。

importkalepyaskale# here `data` has shape (2,N) 2-parameters and N data pointskde=kale.KDE(data)xc,yc=np.meshgrid([np.linspace(-0.5,2.5,100),np.linspace(-3.0,2.5,200)])grid=np.vstack([xc.ravel(),yc.ravel()])# choose reflection boundaries in each parameterboundaries=[[0.0,2.0],[None,2.0]]pdf=kde.pdf(grid,reflect=boundaries)samples=kde.resample(1000,reflect=boundaries)

2D Samples with Reflection

不同直方图参数与不同核的比较

在“箱子宽度”和“箱子来源”中的选择会在直方图的显示方式上产生显著的差异。一般来说,这两个参数都是任意选择的。kde在内核的使用和带宽(平滑量)方面也有自由度,但是有一些启发式方法可以优化这些参数。特别地,对于一般数据,抛物线/epanechnikov核在减少偏差方面是最优的,并且可以使用scott方法估计带宽。

Different Histograms and Kernels

计算目标参数的投影/边缘化pdf

# 2-parameter data, shaped (2,N) for N data-pointskde=kale.KDE(data)# Create bins in each dimensionedges=[np.linspace(-7.5,10.5,100),np.linspace(-3,9,100)]xe,ye=np.meshgrid(*edges)# Grid of test pointsgrid=np.vstack([xe.ravel(),ye.ravel()])# Calculate 2D PDFpdf_2d=kde.pdf(grid)# Calculate each 1D PDFpdf_x=kde.pdf(edges[0],param=0)pdf_y=kde.pdf(edges[1],param=1)

2D PDF with projections

数据点增加时的kde求精

2D PDF with projections

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
rest使用Grails为基于Java的业务对象构建web UI?   禁用Java zookeeper api中的日志消息   使用Servlet过滤器重写java URL   java如何根据Swing中的条件调整面板?   java如何创建包含不同数据类型的二维数组   而Java中的循环怪诞   javascript如何从Android创建WebCoket服务器,该服务器可以与我的JS代码进行通信,该代码在我的Android web视图中呈现   java我有一个快速排序方法的基本情况,但我仍然得到一个堆栈溢出错误?   java将不可序列化的对象传递给处理程序(从子线程)   java从JSF传递枚举值作为参数   java Selenium单击链接后,IE将打开两个窗口,而不是一个窗口   gremlin中的java边缘时间戳   使用Java REST服务处理传入的可重复XmlInlineBinaryData元素   .net体系结构关于集成的建议。net与java应用   java Javafx,滚动窗格,线条滚动不按页面   java如何在单击JButton时使用swing创建新窗口   java如何绑定同时运行的线程数   dot(.)是什么意思在Java语句中表示   java通过mouseover mousewheel向微调器添加焦点