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

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第三方库


热门话题
当JUnit测试失败时,java会显示一条用户友好的消息   java着色器不渲染到窗口   java CXF DOSGi正在忽略注释   我想把这行JAVA改成kotlin   java如果我想在ArrayQue中提供null,我该怎么做   java如何在Springboot中为线程调度命名   java如何将使用者<String>传递给方法   java如何在GWT中检查正则表达式的时间戳?   将Mongodb与Java连接时,在类路径上找不到SLF4J   使用Java创建数组数组   java Hibernate获取对象并另存为外键   java应用程序在打开活动时崩溃   java如何从AlarmManager BroadcastReceiver调用MainActivity方法?   Executor服务中的java不确定任务   JavaSpringMVC本地主机工作应用程序在Heroku部署后返回错误404   当精灵与加速计一起旋转时,java将精灵弹离墙壁   Java:可以创建一个带有“变量”字段的类吗?   java OpenGL空指针异常   使用servlet登录facebook时出现java错误   Android Studio中的java Junit