数据挖掘-实验-关联分析

  1. 1. 关联规则
    1. 1.1. 引入需要用到的包
    2. 1.2. 自定义一份购物数据集, 把下表转化成python接受的数据格式:
    3. 1.3. 找出频繁项集
    4. 1.4. 寻找关联规则
    5. 1.5. 挑选

关联规则

引入需要用到的包

1
2
3
import pandas as pd
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules

自定义一份购物数据集, 把下表转化成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
2
3
4
5
6
7
8
data = {'ID': [1, 2, 3, 4, 5, 6],
'Onion': [1, 0, 0, 1, 1, 1],
'Potato': [1, 1, 0, 1, 1, 1],
'Burger': [1, 1, 0, 0, 1, 1],
'Milk': [0, 1, 1, 1, 0, 1],
'Beer': [0, 0, 1, 0, 1, 0]}
df = pd.DataFrame(data)
df = df[['ID', 'Onion', 'Potato', 'Burger', 'Milk', 'Beer']]

找出频繁项集

这里用到了apriori算法

1
2
3
frequent_itemsets = apriori(df[['Onion', 'Potato', 'Burger', 'Milk', 'Beer']], min_support=0.50, use_colnames=True)
# 可以打印一下看下这些频繁项集
print(frequent_itemsets)

寻找关联规则

1
2
3
rules = association_rules(frequent_itemsets, metric='lift', min_threshold=1)
# 可以打印一下看下这些规则
print(rules)

挑选

选取相关性系数Lift(提升度)> 1.125并且置信度 > 0.8的规则,即rules[(rules['lift'] > 1.125) & (rules['confidence'] > 0.8)]

1
2
rules_select = rules[(rules['lift'] > 1.125) & (rules['confidence'] > 0.8)]
print("选取的规则:", rules_select)

运行后,最后会出现下面的内容,其中antecedents表示前项或者前件,consequents表示前项或者前件。比如这里给出的第一条规则的意思就是 Onion --> Potato.

selected-rules
Onion --> Potato的置信度是1,提升度是1.2. 所以可以考虑洋葱和土豆打包或者放在一起出售。