Welcome to fca_algorithms’s documentation!
FCA algorithms
This is a module providing a set of commonly used algorithms in FCA, RCA, and some of its variants. Its general intention is to provide an easy to use API so that it’s easier to create other programs using these algorithms. Since it’s built with python, the overall performance is not expected to be outstanding. Having that said, the chosen algorithms have a somewhat low algorithmic temporal complexity.
CLI
FCA
Plot a hasse diagram from a context
$ fca_cli -c input.csv --show_hasse
The context is expected to be a csv with the following format
name |
attr1 |
attr2 |
---|---|---|
o1 |
x |
|
o2 |
x |
|
o3 |
x |
x |
o4 |
Output files
$ fca_cli -c input.csv --show_hasse --output_dir path/to/folder/
Will create two files, one representing the hasse graph, the other one with a concept for each line. The line is the index in the hasse graph.
RCA
To plot the hasse diagrams of the contexts 1 and 2 after applying RCA with exists
$ fca_cli -k context_1.csv context_2.csv -r relation_1_2.csv relation_2_1.csv --show_hasse
to specify operator
$ fca_cli -k context_1.csv context_2.csv -r relation_1_2.csv relation_2_1.csv --show_hasse -o forall
FCA utils
Module for FCA basics such as retrieving concepts, drawing a hasse diagram, etc
Getting formal concepts
In batch
from fca.api_models import Context
c = Context(O, A, I)
concepts = c.get_concepts(c)
Incrementally
By intent
from fca.api_models import IncLattice
l = IncLattice(attributes=['a', 'b', 'c', 'd'])
l.add_intent('o1', [0, 2]) # numbers are the indices of the attributes
l.add_intent('o2', [1, 2])
By pair
from fca.api_models import IncLattice
l = IncLattice()
l.add_pair('o1', 'a')
l.add_pair('o2', 'b')
l.add_pair('o2', 'a')
Getting association rules
from fca.api_models import Context
c = Context(O, A, I)
c.get_association_rules(min_support=0.4, min_confidence=1)
Drawing hasse diagram
from fca.plot.plot import plot_from_hasse
from fca.api_models import Context
k = Context(O, A, I)
k.get_lattice().plot()
# plot receives a number of kwargs such as print_latex=True|False
l = IncLattice(attributes=['a', 'b', 'c', 'd'])
l.add_intent('o1', [0, 2]) # numbers are the indices of the attributes
l.add_intent('o2', [1, 2])
.
.
.
l.plot()
Contributors
Ramshell (Nicolas Leutwyler)
Contents: