Python关联分析之——Apriori算法
来源:互联网 发布:java构建redis连接池 编辑:程序博客网 时间:2024/06/06 00:37
使用Apriori算法进行关联分析
Apriori原理
如果某个项集是频繁的,那么它的所有子集也是频繁的。即如果{0,1}是频繁的,则{0},{1}也是频繁的。
这个原理直观上并没有什么帮助,但如果反过来看,就有用了。
如果某个项集是非频繁的,那么它的所有超集也是非频繁的。即如果{0}也是非频繁的,则包含{0}的所有超集如{0,1}也是非频繁的。
重要定义
# 测试项集: [['豆奶','莴苣'], ['莴苣','尿布','葡萄酒','甜菜'], ['豆奶','尿布','葡萄酒','橙汁'], ['莴苣','豆奶','尿布','葡萄酒'], ['莴苣','豆奶','尿布','橙汁']]
- 支持度(support)
一个项集的支持度,被定为为数据集中包含该项集的记录所占的比例,例如上面的测试数据,{豆奶}的支持度为4/5,而在5条记录中,有3条包含{豆奶,尿布},因此{豆奶,尿布}的支持度为3/5。支持度是针对项集来说的,因此可以定义一个最小支持度,而只保留满足最小支持度的项集。
- 可信度或置信度(confidence)
置信度是针对一条诸如{尿布}→{葡萄酒}的关联规则来定义的。这条规则的可信度被定义为“支持度({尿布,葡萄酒})/支持度({尿布})”。上例中,由于{尿布,葡萄酒}的支持度为3/5,{尿布}的支持度为4/5,所以“尿布→葡萄酒”的可信度为3/4=0.75。
python实现
安装对应库
打开命令行窗口,输入
pip install apyori
若失败,可使用其他方法。
测试安装:
from apyori import apriori
导入成功,则安装成功,否则失败。
API
from apyori import aprioridata = [['豆奶','莴苣'], ['莴苣','尿布','葡萄酒','甜菜'], ['豆奶','尿布','葡萄酒','橙汁'], ['莴苣','豆奶','尿布','葡萄酒'], ['莴苣','豆奶','尿布','橙汁']]result = list(apriori(transactions=data)# apriori其他参数说明: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).未知
上面得到的result
是一个列表,由于没找到相关的文档,下面是我所能理解的元素的属性介绍。
result里每一个项集的属性介绍
- items – 项集,frozenset对象,可迭代取出子集。
- support – 支持度,float类型。
- confidence – 置信度或可信度, float类型。
- ordered_statistics – 存在的关联规则
可迭代,迭代后,其元素的属性:- items_base – 关联规则中的分母项集
- confidence – 上面的分母规则所对应的关联规则的可信度
结尾
好了,简单的笔记就写到这。虽然暂时没找到这个库对应的文档,但可以通过pycharm预览每个项集的属性。虽然不能直接得出关联规则排序,但不需要自己写算法来计算支持度,比自己写计算过程好多了。
注意
Apriori算法不适用于非重复项集数元素较多的案例,如果某商店的销售商品种类是N,则其所有子集的个数为2^N - 1,其运算量之大,可想而知,建议分析的商品种类<10种。
- Python关联分析之——Apriori算法
- 关联分析—Apriori算法
- 关联分析之Apriori算法
- 关联分析之Apriori算法
- 关联分析之Apriori算法
- 关联分析之Apriori算法
- 关联分析之Apriori算法
- 关联分析之Apriori算法
- 关联分析——Apriori算法
- Apriori算法——关联分析
- 关联分析的Apriori算法 in Python
- python实现关联规则分析Apriori算法
- 关联分析Apriori算法(python)
- 关联分析-Apriori算法
- Apriori 算法关联分析
- 关联分析Apriori算法
- Apriori 算法关联分析
- Apriori算法,关联分析
- 19 i2c的dev-interface实现eeprom的读写
- 笔记本硬盘重装系统后只有一个盘的数据恢复方法
- 【Scikit-Learn 中文文档】密度估计
- ls命令按兆查看文件大小
- 观察者模式(发布订阅模式)
- Python关联分析之——Apriori算法
- React Native 报PropTypes 问题
- 一分钟告诉你究竟DevOps是什么鬼?
- c语言,作业,11月最后一周。
- 在线报表设计实战系列 – ③制作交叉分析表
- crc校验和
- myeclips Unable to install breakepoint missing line number attributes
- QT中的QImage、QPixmap和opencv 中的mat转化
- 移动端小尺寸样式如何处理