Example #1
0
def test1():
    numpy.random.seed(42)
    data = numpy.random.poisson(5, 1000).reshape(1000, 1)

    for i in numpy.unique(data):
        print(i, numpy.sum(data == i))

    featureTypes = ["discrete"]
    featureTypes = ["categorical"]

    spn = SPN.LearnStructure(
        data,
        featureTypes=featureTypes,
        row_split_method=Splitting.KmeansRows(),
        col_split_method=Splitting.IndependenceTest(),
        # spn = SPN.LearnStructure(data, featureNames=["X1"], domains =
        # domains, families=families, row_split_method=Splitting.KmeansRows(),
        # col_split_method=Splitting.RDCTest(),
        min_instances_slice=100)

    print(spn)
    print(numpy.unique(data))
    evdata = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
    print(evdata)

    ll = (spn.root.eval(numpy.asarray(evdata).reshape(len(evdata), 1)))

    print("Probs", numpy.exp(ll))
    print("Sum LL", numpy.sum(ll))
    print(numpy.histogram(data, bins="auto", density=True))
Example #2
0
import numpy

from tfspn.SPN import SPN, Splitting
import tensorflow as tf

if __name__ == '__main__':

    gen = numpy.random.poisson(5, 1000)

    data = numpy.transpose(numpy.vstack((gen, gen)))

    spn = SPN.LearnStructure(data,
                             min_instances_slice=200,
                             families=["poisson", "poisson"],
                             row_split_method=Splitting.KmeansRows(),
                             col_split_method=Splitting.IndependenceTest())

    #    THIS PRODUCES THE FOLLOWING SPN:
    #
    #     SumNode_0 SumNode(0.154*ProductNode_3, 0.188*ProductNode_6, 0.158*ProductNode_10, 0.076*ProductNode_13, 0.13999999999999999*ProductNode_18, 0.176*ProductNode_21, 0.108*ProductNode_24){
    #     ProductNode_3 ProductNode(PoissonNode_4, PoissonNode_5){
    #         PoissonNode_4 P(X_0_|λ=6.0)
    #         PoissonNode_5 P(X_1_|λ=6.0)
    #         }
    #     ProductNode_6 ProductNode(PoissonNode_7, PoissonNode_8){
    #         PoissonNode_7 P(X_0_|λ=5.0)
    #         PoissonNode_8 P(X_1_|λ=5.0)
    #         }
    #     ProductNode_10 ProductNode(PoissonNode_11, PoissonNode_12){
    #         PoissonNode_11 P(X_0_|λ=7.360759493670886)
    #         PoissonNode_12 P(X_1_|λ=7.360759493670886)