0

标准任务:有一些数据的表格表示

'''

x  1   2     3
y  1   1/2   2

'''

我尝试通过 Q1*x+Q0 行以及贝叶斯推理和 Scala 上的 Figaro 概率系统对其进行插值。

我的代码在哪里:

'''

class LineEx {

    val universe = Universe.createNew()

    val Q1: Uniform = Uniform(-10.0, 10.0)
    val Q0: Uniform = Uniform(-10.0, 10.0)

    val e1 = Normal(fx(Q1, Q0, 1.0), 0.5)
    val e2 = Normal(fx(Q1, Q0, 2.0), 0.5)
    val e3 = Normal(fx(Q1, Q0, 3.0), 0.5)

    def fx(q1: Element[Double], q0: Element[Double], x: Double): Element[Double] = {
      q1 * Constant(x) ++ q0
    }

    def resolve(): Array[Double] = {
      e1.observe(1.0)
      e2.observe(0.5)
      e3.observe(2.0)
      val likeliHood = e1 * e2 * e3
      val priorDistribution = Q1 * Q0
      val posteriorDistribution = likeliHood * priorDistribution
      val mh = new OneTimeMetropolisHastings(universe, 100000, ProposalScheme.default, 10000, 1, posteriorDistribution, Q1, Q0)
      mh.start()
      val r = Array(mh.mean(Q1), mh.mean(Q0))
      mh.stop()
      mh.kill()
      r
    }

}

'''

但是这段代码总是返回 0, 0 有什么问题吗?

(我之前通过 LSM 解决的结果 -

'''

Q1=1/2
Q0=1/6

'''

)

4

0 回答 0