Ubuntu16.04 安装 Figaro

Figaro是基于Scala的函数编程框架,在Avi Pfeffer的《概率编程实战》中有介绍,可以使用这个库进行概率编程,使用贝叶斯网等等。下面看一下如何使用这个Scala库。这是Github上的介绍:
Figaro is a probabilistic programming language that supports development of very rich probabilistic models and provides reasoning algorithms that can be applied to models to draw useful conclusions from evidence. Both model representation and reasoning algorithm development can be challenging tasks.

安装JVM

参考安装JVM

安装scala

去scala官网下载zip安装包:
https://downloads.lightbend.com/scala/2.12.3/scala-2.12.3.tgz
解压后将文件加拷贝到合适的位置,例如/opt,在/etc/environment引号内的结尾加入/opt/scala/bin,并执行

source /etc/environment
  • 1

这样就吧scala的脚本所在的目录添加到环境变量里。执行scala命令进入scala控制台,敲入print("hello world")则会执行成功。

使用scala控制台

下载并安装sbt

由于Figaro是Scala的一个库,因此要使用sbt工具进行编译。sbt的官网地址是:http://www.scala-sbt.org,我们这里只下载压缩包就行:https://cocl.us/sbt-1.0.1.zip,得到的zip直接可以使用(运行在JVM上的),解压得到三个子文件夹,sbt命令文件就在bin文件夹里。建议使用sbt命令文件的绝对路径执行,如果直接cd进bin文件夹,可能出现Could not find launcher jar: ./bin/sbt-launch.jar的问题,这就需要配置$PATH,这里只是编译Figaro,是临时使用sbt。
第一次使用可能需要联网下载库,耐心等待就行了,运行成功后的sbt就是下图:

使用绝对路径运行sbt

下载并编译Figaro

在Github上下载Figaro,地址https://github.com/p2t2/figaro,可以clone下来或者直接下载zip包。使用build.sbt来运行sbt,执行如下命令:

/mnt/other/sbt/bin/sbt package
  • 1

编译成功

/mnt/other/sbt/bin/sbt就是我的sbt命令文件的绝对位置,如此操作后会得到一个jar文件:./Figaro/target/scala-2.12/figaro_2.12-5.0.0.0.jar

使用jar文件

笔者使用的是IntelliJ IDE,需要单独安装scala插件。在src文件夹中新建一个main.scala,输入以下代码:

import com.cra.figaro.language._
import com.cra.figaro.algorithm.factored.VariableElimination

object main {
  def main(args: Array[String]): Unit = {
    val avg = Flip(0.3)
    println(VariableElimination.probability(avg,true))
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

将刚才生成的figaro_2.12-5.0.0.0.jar添加到工程里,运行后得到以下所示的结果:
运行并添加jar
这段代码生成一个Flip的离散原子元素((0-1)分布),并求取该元素的模型下取的概率,至此,Figaro安装成功。