Apriori简单运用

https://www.cnblogs.com/molieren/articles/10679277.html
https://www.cnblogs.com/bigmonkey/p/7405555.html
https://www.cnblogs.com/bigmonkey/p/7449761.html

from efficient_apriori import apriori
# 设置数据集
data = [('牛奶','面包','尿布'),
           ('可乐','面包', '尿布', '啤酒'),
           ('牛奶','尿布', '啤酒', '鸡蛋'),
           ('面包', '牛奶', '尿布', '啤酒'),
           ('面包', '牛奶', '尿布', '可乐')]
itemsets, rules = apriori(data, min_support=0.5,  min_confidence=1)  #最小支持度,最小置信度

min_support=0.5表示频繁项集出现的次数占一半或者以上,这里有5次购物,则至少出现3次才可以。
min_confidence=1表示最小置信度为1,其实是买了前件,就一定要买后件。

itemsets   # 频繁项集
{1: {('啤酒',): 3, ('尿布',): 5, ('牛奶',): 4, ('面包',): 4},
 2: {('啤酒', '尿布'): 3, ('尿布', '牛奶'): 4, ('尿布', '面包'): 4, ('牛奶', '面包'): 3},
 3: {('尿布', '牛奶', '面包'): 3}}

前面1,2,3代表的是频繁项集的维数,里面的3,5,4,4等是支持度(大于等于3),即出现的次数。

rules  # 频繁规则
[{牛奶} -> {尿布}, {面包} -> {尿布}, {啤酒} -> {尿布}, {牛奶, 面包} -> {尿布}]

买了牛奶一定会买尿布,买了啤酒一定会买尿布等等,但买了尿布不一定会买啤酒。

data 是个List类型,其中每个值都可以是一个集合。实际上也可以把 data 列表中的每个值由tuple设置为 List 类型,两者的运行结果是一样的。

efficient-apriori 工具包把每一条数据集里的项式都放到了一个集合中进行运算,并没有考虑它们之间的先后顺序。因为实际情况下,同一个购物篮中的物品也不需要考虑购买的先后顺序。而其他的 Apriori 算法可能会因为考虑了先后顺序,出现计算频繁项集结果不对的情况。所以这里采用的是 efficient-apriori 这个工具包。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章