基于离散高斯分布的粒子样本对

SamplePairsGaussian的Python项目详细描述


#基于离散高斯的粒子样本对 python代码,以n个维度对给定的一组粒子对进行采样,其中每对粒子的概率为高斯

<;img src=“示例/图形/示例二维计数.png”width=“500”>;

##要求

Python3&numpy.

##安装和使用

使用pip: ` pip install samplePairsGaussian ` 或手动: ` python setup.py install ` 在你的代码中: ` from samplePairsGaussian import * ` 另请参见[示例](示例)文件夹。

##想法

给定一组n粒子,其位置在d维空间中,表示为i=0,1,…,n

我们要对一对粒子进行取样,其中i,j,其中i=/=j,取样概率由下式给出: ` p(i,j) ~ exp( - |x_i - x_j|^2 / 2 sigma^2 ) ` 其中,我们使用x来表示l u 2范数,西格玛是一些选定的标准偏差。

这个问题很容易写下来,但是对于大量的粒子来说很难实现,因为它需要计算n^2距离。

另一个问题是,我们可能希望:
  1. 添加粒子。
  2. 移除一个粒子。
  3. 移动粒子。

在这种情况下,并非所有的距离都会受到影响-这些操作的顺序应该是n。然而,如果我们通过形成cdf来抽样离散分布,我们将需要重新计算它,这是昂贵的。或者,如果我们使用拒绝抽样,我们必须有一个良好的候选(信封)分布,使接受率高。

这个库试图找出用python执行这些操作的最有效方法。

该库减少计算成本的一个关键方法是引入粒子距离的截断,其中不考虑采样时由大于截断的距离分隔的粒子对。很自然地,这是标准偏差的某些选择倍数,即对于某些标准偏差,m*sigma。如果使用拒绝抽样从均匀分布中抽取,则接受率应该近似为cIT>(SqRT(2×PI)*sigma)/(2×m×sigma)=1.253/m</cTIT>。(在第一个方程中:高斯分布的面积是1,除以宽度2*m*sigma和高度1/(sqrt(2*pi)*sigma)的均匀分布面积)。

通常,我们避免使用for循环,并且广泛依赖使用numpy的数组操作。

###多种物种

也支持多个物种,其中我们有多个物种,但希望绘制同一物种的两个粒子(任何物种的两个粒子都可以通过忽略物种标签来完成)。

具体来说,probCalculatorMultispecies和samplerMultispecies类实现了这一点。

##示例

请参阅[示例](示例)文件夹。

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

推荐PyPI第三方库


热门话题
java是否存在这样一种场景:Java7的Hashmap实现优于Java8的实现   java如何打印这些完整的数组?   java BuildException:未能执行aapt   java如何使用类。未知类型的集合返回的cast()   java准备语句返回错误的值   webview 安卓中的java显示身份验证对话框   java如何重命名列名JPA Hibernate   java查询从特定用户和特定时间段的Oracle表(通过比较原始表和备份表)中选择修改的行   java Youtube视频仅在三星S6设备上加载时自动暂停   未调用java RecyclerView getItemViewType   使用JSch setCommand执行带有源选项的java Shell ping命令时失败   java Hibernate:无法删除|删除分离的实例   Java Spring@MappedSuperclass字段作为子类中的@Id字段   java Android:确定单击了哪个按钮,因为该按钮未在xml中定义   如何计算java阵列内存使用率   使用Java查找按字母顺序排列的第一个字符串   javascript注销功能刷新页面,但页面仍已登录   当接口作为参数提供时,java依赖项注入不起作用   java中带原语的字符串扭曲