30 lines
817 B
Python
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")
|