跳转到主要内容

Apriori算法的高效Python实现。

项目描述

Efficient-Apriori Build Status PyPI version Documentation Status Downloads Black

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 (14.7 kB 查看散列)

上传时间

构建分布

efficient_apriori-2.0.5-py3-none-any.whl (14.8 kB 查看哈希值)

上传时间 Python 3

由以下支持