python
import pandas as pd
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
retail_shopping_basket = {'ID': [1, 2, 3, 4, 5, 6],
'Basket': [['Beer', 'Diaper', 'Pretzels', 'Chips', 'Aspirin'],
['Diaper', 'Beer', 'Chips', 'Lotion', 'Juice', 'BabyFood', 'Milk'],
['Soda', 'Chips', 'Milk'],
['Soup', 'Beer', 'Diaper', 'Milk', 'IceCream'],
['Soda', 'Coffee', 'Milk', 'Bread'],
['Beer', 'Chips']]
}
retail = pd.DataFrame(retail_shopping_basket)
retail = retail[['ID', 'Basket']]
pd.options.display.max_colwidth = 100
retail
日常中见到的购物数据往往是所购买的数据而不是全部数据
数据集中都是字符串组成的,需要转换成数值编码
将展示不需要的字段属性拿出来
python
retail_id=retail.drop(columns=['Basket'])
retail_id
根据每个数据集特性找到其分割符,如该数据集中的分隔符为,
python
retail_Basket=retail.Basket.str.join(',')
retail_Basket
python
retail_Basket=retail_Basket.str.get_dummies(",")
###get_dummies()需要告知其分隔符 该函数主要用于进行数据处理
##列属性为所有出现的属性 出现了则该记录该属性为1
retail_Basket
python
retail=retail_id.join(retail_Basket)##将无关项重新组合
retail
后续在选择频繁项集与确定规则时不需要其他无关属性
python
frequent_itemsets_2=apriori(retail.drop(columns=['ID']),use_colnames=True)
##min_support默认为0.5
frequent_itemsets_2
python
association_rules(frequent_itemsets_2,metric='lift')
lift值越大则相关性越强