关联规则
引入需要用到的包
1 | import pandas as pd |
自定义一份购物数据集, 把下表转化成python接受的数据格式:
ID | Onion | Potato | Burger | Milk | Beer |
---|---|---|---|---|---|
1 | 1 | 1 | 1 | 0 | 0 |
2 | 0 | 1 | 1 | 1 | 0 |
3 | 0 | 0 | 0 | 1 | 0 |
4 | 1 | 1 | 0 | 1 | 0 |
5 | 1 | 1 | 1 | 0 | 1 |
6 | 1 | 1 | 1 | 1 | 0 |
1 | data = {'ID': [1, 2, 3, 4, 5, 6], |
找出频繁项集
这里用到了apriori算法
1 | frequent_itemsets = apriori(df[['Onion', 'Potato', 'Burger', 'Milk', 'Beer']], min_support=0.50, use_colnames=True) |
寻找关联规则
1 | rules = association_rules(frequent_itemsets, metric='lift', min_threshold=1) |
挑选
选取相关性系数Lift(提升度)> 1.125并且置信度 > 0.8的规则,即rules[(rules['lift'] > 1.125) & (rules['confidence'] > 0.8)]
1 | rules_select = rules[(rules['lift'] > 1.125) & (rules['confidence'] > 0.8)] |
运行后,最后会出现下面的内容,其中antecedents表示前项或者前件,consequents表示前项或者前件。比如这里给出的第一条规则的意思就是 Onion --> Potato.
selected-rules
Onion --> Potato的置信度是1,提升度是1.2. 所以可以考虑洋葱和土豆打包或者放在一起出售。