示例#1
0
def computeMI2(spn, f1, f2, verbose=False):

    Pxy = spn.marginalizeToEquation([f1, f2])
    Px = spn.marginalizeToEquation([f1])
    Py = spn.marginalizeToEquation([f2])

    sumIxy = "{Pxy} * (log({Pxy})/log(2) - (log({Px})/log(2) + log({Py})/log(2)))".format(
        **{
            'Pxy': Pxy,
            'Px': Px,
            'Py': Py
        })
    # evl = lambda x, y: eval(sumIxy, None, {"x_%s_" % f1:x, "x_%s_" % f2: y, "poissonpmf":poissonpmf})
    evl = compileEq(sumIxy, {
        "x_%s_" % f1: "x",
        "x_%s_" % f2: "y"
    },
                    compileC=False)

    Ixy = nsum(lambda x, y: evl(int(x), int(y)), [0, inf], [0, inf],
               verbose=False,
               method="d",
               tol=10**(-10))

    if verbose:
        print("I(%s,%s)=%s" % (f1, f2, Ixy))

    return Ixy
示例#2
0
def computeEntropy2(spn, f1, f2, verbose=False):

    Pxy = spn.marginalizeToEquation([f1, f2])

    sumHxy = "{Pxy} * log({Pxy})/log(2)".format(**{'Pxy': Pxy})

    evl = compileEq(sumHxy, {"x_%s_" % f1: "x", "x_%s_" % f2: "y"})
    # evl = lambda x, y: eval(sumHxy, None, {"x_%s_" % f1:x, "x_%s_" % f2: y, "poissonpmf": poissonpmf})

    Hxy = -nsum(lambda x, y: evl(int(x), int(y)), [0, inf], [0, inf],
                verbose=False,
                methomethod="d",
                tol=10**(-10))
    if verbose:
        print("H(%s,%s)=%s" % (f1, f2, Hxy))

    return Hxy
示例#3
0
def computeExpectation(spn, f1, verbose=False):

    Px = spn.marginalizeToEquation([f1])

    sumEx = "x * {Px}".format(**{'Px': Px})

    evl = compileEq(sumEx, {"x_%s_" % f1: "x"})

    Ex = nsum(lambda x: evl(int(x)), [0, inf],
              verbose=False,
              method="d",
              tol=10**(-10))

    if verbose:
        print("E(%s)=%s" % (f1, Ex))

    return Ex
示例#4
0
def computeEntropy(spn, f1, verbose=False):

    Px = spn.marginalizeToEquation([f1])

    sumHxy = "{Px} * log({Px})/log(2)".format(**{'Px': Px})

    evl = compileEq(sumHxy, {"x_%s_" % f1: "x"})

    Hx = -nsum(lambda x: evl(int(x)), [0, inf],
               verbose=False,
               method="d",
               tol=10**(-10))

    if verbose:
        print("H(%s)=%s" % (f1, Hx))

    return Hx
示例#5
0
def computeExpectation2(spn, f1, f2, verbose=False):

    Pxy = spn.marginalizeToEquation([f1, f2]).replace("x_%s_" % f1,
                                                      "x").replace(
                                                          "x_%s_" % f2, "y")

    sumExy = "(x * y) * {Pxy}".format(**{'Pxy': Pxy})

    evl = compileEq(sumExy, {"x_%s_" % f1: "x", "x_%s_" % f2: "y"})

    Exy = nsum(lambda x, y: evl(int(x), int(y)), [0, inf], [0, inf],
               verbose=False,
               method="d",
               tol=10**(-10))

    if verbose:
        print("E(%s, %s)=%s" % (f1, f2, Exy))

    return Exy
示例#6
0
def getJointDist(self, f1, f2):
    Pxy = self.marginalizeToEquation([f1, f2])

    func = compileEq(Pxy, {"x_%s_" % f1: "x", "x_%s_" % f2: "y"})

    return func