我正在研究一套超过22,000条记录的数据集,当我用apriori模型尝试它时,它所花费的时间太长了,即使是对像20这样的少量记录来说也是如此。我的代码中有问题吗?还是有更快的方法可以快速地将分析人员转换成一个列表呢?我使用的代码如下。
for i in range(0, 20):
transactions.append([str(dataset.values[i,j]) for j in range(0, 543)])
from apyori import apriori
associations = apriori(transactions, min_support=0.004, min_confidence=0.3, min_lift=3, min_length=2)
result = list(associations)
发布于 2018-07-08 15:10:33
没有数据是很难评估的,但Apriori的复杂性取决于许多因素,包括支持阈值、事务数、项数、平均/最大事务长度等。
在即使是少量事务都需要很长时间才能运行的情况下,这通常是最低支持度太低的问题。当支持度很低(接近0)时,该算法仍然有效地强制执行,因为它必须查看每个长度的所有可能的项组合。这相当于数学功率集,它是指数的。对于仅仅41个项目,您实际上正在尝试2^41-1可能的组合,即略高于1.1万亿种可能性。
我建议从“高”的min_support开始(比如0.20),然后慢慢地往下走。测试一开始需要几秒钟的东西比花很长时间的测试要容易。
其他重要注意事项:在Apyori中没有min_length参数。我不知道每个人都是从哪里得到的(你并不是唯一认为有这样的人的),除非这是我发现的一篇随机的博客文章。参数如下(直接取自代码):
Keyword arguments:
min_support -- The minimum support of relations (float).
min_confidence -- The minimum confidence of relations (float).
min_lift -- The minimum lift of relations (float).
max_length -- The maximum length of the relation (integer).
至于它的价值,我为Apyori编写了非官方的文档,可以找到这里。
https://stackoverflow.com/questions/49518187
复制