item_list1 = [['西红柿','排骨','鸡蛋'],
['西红柿','茄子'],
['鸡蛋','袜子'],
['西红柿','排骨','茄子'],
['西红柿','排骨','袜子','酸奶'],
['鸡蛋','茄子','酸奶'],
['排骨','鸡蛋','茄子'],
['土豆','鸡蛋','袜子'],
['西红柿','排骨','鞋子','土豆']]
import pandas as pd
item_df1 = pd.DataFrame(item_list1)
print(item_df1)
0 1 2 3
0 西红柿 排骨 鸡蛋 None
1 西红柿 茄子 None None
2 鸡蛋 袜子 None None
3 西红柿 排骨 茄子 None
4 西红柿 排骨 袜子 酸奶
5 鸡蛋 茄子 酸奶 None
6 排骨 鸡蛋 茄子 None
7 土豆 鸡蛋 袜子 None
8 西红柿 排骨 鞋子 土豆
from mlxtend.preprocessing import TransactionEncoder
te = TransactionEncoder()
df_tf1 = te.fit_transform(item_list1)
df1 = pd.DataFrame(df_tf1,columns=te.columns_)
print(df1)
土豆 排骨 茄子 袜子 西红柿 酸奶 鞋子 鸡蛋
0 False True False False True False False True
1 False False True False True False False False
2 False False False True False False False True
3 False True True False True False False False
4 False True False True True True False False
5 False False True False False True False True
6 False True True False False False False True
7 True False False True False False False True
8 True True False False True False True False
from mlxtend.frequent_patterns import apriori
frequent_itemsets = apriori(df1, min_support=0.2, use_colnames=True)
frequent_itemsets.sort_values(by='support', ascending=False, inplace=True)
print(frequent_itemsets[frequent_itemsets.itemsets.apply(lambda x: len(x)) == 2])
support itemsets
8 0.444444 (西红柿, 排骨)
7 0.222222 (排骨, 茄子)
9 0.222222 (鸡蛋, 排骨)
10 0.222222 (西红柿, 茄子)
11 0.222222 (鸡蛋, 茄子)
12 0.222222 (鸡蛋, 袜子)
from mlxtend.frequent_patterns import association_rules
association_rule = association_rules(frequent_itemsets,metric='confidence',min_threshold=0.4)
association_rule.sort_values(by='lift',ascending=False,inplace=True)
association_rule
| antecedents | consequents | antecedent support | consequent support | support | confidence | lift | leverage | conviction |
---|
0 | (西红柿) | (排骨) | 0.555556 | 0.555556 | 0.444444 | 0.800000 | 1.44 | 0.135802 | 2.222222 |
---|
1 | (排骨) | (西红柿) | 0.555556 | 0.555556 | 0.444444 | 0.800000 | 1.44 | 0.135802 | 2.222222 |
---|
5 | (袜子) | (鸡蛋) | 0.333333 | 0.555556 | 0.222222 | 0.666667 | 1.20 | 0.037037 | 1.333333 |
---|
2 | (茄子) | (排骨) | 0.444444 | 0.555556 | 0.222222 | 0.500000 | 0.90 | -0.024691 | 0.888889 |
---|
3 | (茄子) | (西红柿) | 0.444444 | 0.555556 | 0.222222 | 0.500000 | 0.90 | -0.024691 | 0.888889 |
---|
4 | (茄子) | (鸡蛋) | 0.444444 | 0.555556 | 0.222222 | 0.500000 | 0.90 | -0.024691 | 0.888889 |
---|