首先導入包含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
