import click from efficient_apriori import apriori from data.main import connect @click.command("apriori:rules") def rules(): DB = connect() data = DB.query(""" SELECT --list_prepend(parent.id, list(child.id)) as transaction list_prepend(parent.tld, list(child.tld)) as transaction FROM stories s JOIN related_stories r ON r.parent_id = s.id JOIN publishers parent ON parent.id = s.publisher_id JOIN publishers child ON child.id = r.publisher_id GROUP BY --parent.id parent.tld """).df() DB.close() transactions = data.transaction.apply(lambda x: tuple(x)).values itemsets, rules = apriori(transactions, min_support=0.1, min_confidence=0.8) print(*rules, sep="\n")