python apriori库_Python efficient-apriori包_程序模块 - PyPI - Python中文网

高效apriori68747470733a2f2f7472617669732d63692e636f6d2f746f6d6d796f642f456666696369656e742d417072696f72692e7376673f6272616e63683d6d617374657268747470733a2f2f62616467652e667572792e696f2f70792f656666696369656e742d617072696f72692e73766768747470733a2f2f72656164746865646f63732e6f72672f70726f6a656374732f656666696369656e742d617072696f72692f62616467652f3f76657273696f6e3d6c617465737468747470733a2f2f706570792e746563682f62616467652f656666696369656e742d617072696f726968747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f64652532307374796c652d626c61636b2d3030303030302e737667

Apriori算法的高效纯Python实现。适用于Python3.6+。

apriori算法揭示了分类数据中的隐藏结构。

典型的例子是一个数据库,其中包含从超市购买的商品。

每次购买都有许多与之相关的项目。

我们希望从数据中发现诸如{bread, eggs} -> {bacon}之类的关联规则。

这就是association rule learning的目标,Apriori algorithm可以说是解决这个问题最著名的算法。

这个存储库包含了Apriori算法的一个有效的、经过良好测试的实现,如Agrawal等人在1994年出版的original paper中所描述的。

示例

下面是一个最小的工作示例。

注意,在每个存在eggs的事务中,也存在bacon。

因此,规则{eggs} -> {bacon}以100%置信度返回。fromefficient_aprioriimportaprioritransactions=[('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}]

更多的例子如下。

安装

该软件可通过github和PyPI获得。

您可以使用pip安装软件。pip install efficient-apriori

贡献

如果您有建议和改进,欢迎您仔细检查代码并提出请求。

您提交的代码必须符合PEP8,并且所有测试都必须通过。

更多示例

过滤和排序关联规则

可以对返回的关联规则列表进行筛选和排序。fromefficient_aprioriimportaprioritransactions=[('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 liftrules_rhs=filter(lambdarule:len(rule.lhs)==2andlen(rule.rhs)==1,rules)forruleinsorted(rules_rhs,key=lambdarule:rule.lift):print(rule)# Prints the rule and its confidence, support, lift, ...

使用大型数据集

如果数据太大而无法放入内存,则可以传递返回生成器而不是列表的函数。

min_support很可能必须是一个大值,否则算法将需要很长时间才能终止。

如果您有大量的数据,那么这个python实现可能不够快,您应该参考更专业的实现。defdata_generator(filename):"""Data generator, needs to return a generator to be called several times."""defdata_gen():withopen(filename)asfile:forlineinfile:yieldtuple(k.strip()forkinline.split(','))returndata_gentransactions=data_generator('dataset.csv')itemsets,rules=apriori(transactions,min_support=0.9,min_confidence=0.6)

欢迎加入QQ群-->: 979659372

group.png

推荐PyPI第三方库