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))
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)