Quick start

Construct a concept lattice

[1]:
from galactic.population import Population
from galactic.concepts import ConceptLattice
from galactic.examples.arithmetic import (
    DivisorDescription,
    MultipleDescription,
    DivisorStrategy,
    MultipleStrategy,
    Integer,
)
[2]:
individuals = {"48": 48, "36": 36, "64": 64, "56": 56, "84": 84}
characteristic = Integer()
population = Population(individuals)
descriptions = [DivisorDescription(characteristic), MultipleDescription(characteristic)]
strategies = [DivisorStrategy(characteristic), MultipleStrategy(characteristic)]
lattice = ConceptLattice.create(population, descriptions, strategies)
[3]:
list(list(concept) for concept in lattice.domain)
[3]:
[['48', '36', '64', '56', '84'],
 ['48', '64', '56', '84'],
 ['48', '36', '56', '84'],
 ['48', '36', '64'],
 ['48', '64', '56'],
 ['48', '56', '84'],
 ['48', '36', '84'],
 ['36', '56', '84'],
 ['48', '64'],
 ['48', '36'],
 ['64', '56'],
 ['48', '56'],
 ['48', '84'],
 ['56', '84'],
 ['36', '84'],
 ['48'],
 ['64'],
 ['36'],
 ['56'],
 ['84'],
 []]

Display a concept lattice

[4]:
from galactic.algebras.poset import HasseDiagram
from galactic.concepts import ConceptRenderer
[5]:
HasseDiagram(lattice, domain_renderer=ConceptRenderer())
[5]:
../_images/quickstart_notebook_6_0.png

Extract rules

[6]:
from galactic.rules import CanonicalDirectBasis, RuleTable
[7]:
basis = CanonicalDirectBasis(lattice)
RuleTable(basis, support=0.3)
[7]:

Premises

Conclusions

Support

Confidence

D(4032)M(4)

1

1

D(1344)

M(4)

0.8

1

D(1008)

M(4)

0.8

1

D(576)

M(4)

0.6

1

M(8)

D(1344)

0.6

1

M(12)

D(1008)

0.6

1

D(504)

M(4)

0.6

1

D(576)M(8)

M(16)

0.4

1

D(448)

M(8)

0.4

1

D(1344)D(1008)D(504)

M(28)

0.4

1

M(12)D(504)

D(252)

0.4

1