wwu-577/src/mining/apriori.py

30 lines
817 B
Python

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