Python关联分析之——Apriori算法

使用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 apriori

data = [['豆奶','莴苣'],
        ['莴苣','尿布','葡萄酒','甜菜'],
        ['豆奶','尿布','葡萄酒','橙汁'],
        ['莴苣','豆奶','尿布','葡萄酒'],
        ['莴苣','豆奶','尿布','橙汁']]

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里每一个项集的属性介绍

    1. items – 项集,frozenset对象,可迭代取出子集。
    2. support – 支持度,float类型。
    3. confidence – 置信度或可信度, float类型。
    4. ordered_statistics – 存在的关联规则
      可迭代,迭代后,其元素的属性:
      1. items_base – 关联规则中的分母项集
      2. confidence – 上面的分母规则所对应的关联规则的可信度

结尾

好了,简单的笔记就写到这。虽然暂时没找到这个库对应的文档,但可以通过pycharm预览每个项集的属性。虽然不能直接得出关联规则排序,但不需要自己写算法来计算支持度,比自己写计算过程好多了。

注意

Apriori算法不适用于非重复项集数元素较多的案例,如果某商店的销售商品种类是N,则其所有子集的个数为2^N - 1,其运算量之大,可想而知,建议分析的商品种类<10种。

  • 8
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值