首先导入包含apriori算法的mlxtend库,
# pip install mlxtend
调用apriori进行关联规则分析,具体代码如下,设置最小支持度(min_support)为0.4,最小置信度(min_threshold)为0.1,
最小提升度(lift)为1.0,对数据集进行关联规则分析,
from mlxtend.preprocessing import TransactionEncoder from mlxtend.frequent_patterns import apriori from mlxtend.frequent_patterns import association_rules import pandas as pd df_arr = [['苹果','香蕉','鸭梨'], ['橘子','葡萄','苹果','哈密瓜','火龙果'], ['香蕉','哈密瓜','火龙果','葡萄'], ['橘子','橡胶'], ['哈密瓜','鸭梨','葡萄'] ] #转换为算法可接受模型(布尔值) te = TransactionEncoder() df_tf = te.fit_transform(df_arr) df = pd.DataFrame(df_tf,columns=te.columns_) #设置支持度求频繁项集 frequent_itemsets = apriori(df,min_support=0.4,use_colnames= True) #求关联规则,设置最小置信度为0.15 rules = association_rules(frequent_itemsets,metric = 'confidence',min_threshold = 0.15) #设置最小提升度 rules = rules.drop(rules[rules.lift <1.0].index) #设置标题索引并打印结果 rules.rename(columns = {'antecedents':'from','consequents':'to','support':'sup','confidence':'conf'},inplace = True) rules = rules[['from','to','sup','conf','lift']] print(rules) #rules为Dataframe格式,可根据自身需求存入文件
输出结果如下:
from to sup conf lift 0 (哈密瓜) (火龙果) 0.4 0.666667 1.666667 1 (火龙果) (哈密瓜) 0.4 1.000000 1.666667 2 (哈密瓜) (葡萄) 0.6 1.000000 1.666667 3 (葡萄) (哈密瓜) 0.6 1.000000 1.666667 4 (葡萄) (火龙果) 0.4 0.666667 1.666667 5 (火龙果) (葡萄) 0.4 1.000000 1.666667 6 (哈密瓜, 葡萄) (火龙果) 0.4 0.666667 1.666667 7 (哈密瓜, 火龙果) (葡萄) 0.4 1.000000 1.666667 8 (葡萄, 火龙果) (哈密瓜) 0.4 1.000000 1.666667 9 (哈密瓜) (葡萄, 火龙果) 0.4 0.666667 1.666667 10 (葡萄) (哈密瓜, 火龙果) 0.4 0.666667 1.666667 11 (火龙果) (哈密瓜, 葡萄) 0.4 1.000000 1.666667 Process finished with exit code 0