Apriori算法的高效Python实现。
项目描述
Efficient-Apriori

Apriori算法的高效纯Python实现。
Apriori算法能够挖掘分类数据中的隐藏结构。一个经典的例子是包含超市购物记录的数据库。每次购物都与一些商品相关联。我们希望从数据中挖掘出如{面包, 鸡蛋} -> {培根}
这样的关联规则。这就是关联规则学习的目标,而关联规则学习和Apriori算法可以说是解决这个问题最著名的算法。这个仓库包含了一个高效、经过良好测试的Apriori算法实现,该实现根据Agrawal等人1994年发表的原始论文进行。
代码稳定,广泛使用。它被收录在Bonaccorso所著的《精通机器学习算法》一书中。
代码运行速度快。请参考这个PR中的时间。
示例
以下是一个最小的工作示例。注意,在每次含有鸡蛋
的交易中,都会有培根
。因此,返回的规则{鸡蛋} -> {培根}
具有100%的置信度。
from efficient_apriori import apriori
transactions = [('eggs', 'bacon', 'soup'),
('eggs', 'bacon', 'apple'),
('soup', 'bacon', 'banana')]
itemsets, rules = apriori(transactions, min_support=0.5, min_confidence=1)
print(rules) # [{eggs} -> {bacon}, {soup} -> {bacon}]
如果你的数据在pandas DataFrame中,你必须将其转换为元组列表。你有缺失值,或者算法运行时间过长?请参考此评论。下面包含更多示例。
安装
该软件可通过GitHub获取,也可通过PyPI获取。您可以使用pip
安装该软件。
pip install efficient-apriori
贡献
如果您有建议和改进,欢迎审查代码并提交pull请求。您提交的代码必须符合PEP8规范,并且所有测试都必须通过。请参阅贡献者列表。
更多示例
过滤和排序关联规则
可以过滤和排序返回的关联规则列表。
from efficient_apriori import apriori
transactions = [('eggs', 'bacon', 'soup'),
('eggs', 'bacon', 'apple'),
('soup', 'bacon', 'banana')]
itemsets, rules = apriori(transactions, min_support=0.2, min_confidence=1)
# Print out every rule with 2 items on the left hand side,
# 1 item on the right hand side, sorted by lift
rules_rhs = filter(lambda rule: len(rule.lhs) == 2 and len(rule.rhs) == 1, rules)
for rule in sorted(rules_rhs, key=lambda rule: rule.lift):
print(rule) # Prints the rule and its confidence, support, lift, ...
带ID的交易
如果您需要知道哪些交易发生在频繁项集中,请将output_transaction_ids
参数设置为True
。这将更改输出,使其包含每个项集的ItemsetCount
对象。这些对象具有包含频繁交易ID集合的members
属性以及count
属性。ID是交易按出现顺序的枚举。
from efficient_apriori import apriori
transactions = [('eggs', 'bacon', 'soup'),
('eggs', 'bacon', 'apple'),
('soup', 'bacon', 'banana')]
itemsets, rules = apriori(transactions, output_transaction_ids=True)
print(itemsets)
# {1: {('bacon',): ItemsetCount(itemset_count=3, members={0, 1, 2}), ...
项目详情
关闭
efficient_apriori-2.0.5.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 29e856c2591b30ea3d101b63922c0299fabd5f9e6919d2593fffc45b6c6e583b |
|
MD5 | 28096decae691e2976ef60dcb1364067 |
|
BLAKE2b-256 | dd17343ecc0dcfbe294dfc9864cc674d216e6b72d05632c5216ef138b0c42a96 |
关闭
efficient_apriori-2.0.5-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 901f282c101927e2ad25357ec084828c022e085fcabdeed0ab004ae61d6319dd |
|
MD5 | b732bd232190693357e4badb00e9f8bd |
|
BLAKE2b-256 | eebd63a68df8040abf8169b9589af382d04ad38d7b3e028eb8e95985bdbe838c |