5 分鐘掌握 Python 關(guān)聯(lián)規(guī)則分析
1. 關(guān)聯(lián)規(guī)則
1.1 基本概念
項集:item的集合,如集合{牛奶、麥片、糖}是一個3項集,可以認為是購買記錄里物品的集合。 頻繁項集:顧名思義就是頻繁出現(xiàn)的item項的集合。如何定義頻繁呢?用比例來判定,關(guān)聯(lián)規(guī)則中采用支持度和置信度兩個概念來計算比例值 支持度:共同出現(xiàn)的項在整體項中的比例。以購買記錄為例子,購買記錄100條,如果商品A和B同時出現(xiàn)50條購買記錄(即同時購買A和B的記錄有50),那邊A和B這個2項集的支持度為50% 
置信度:購買A后再購買B的條件概率,根據(jù)貝葉斯公式,可如下表示: 
提升度:為了判斷產(chǎn)生規(guī)則的實際價值,即使用規(guī)則后商品出現(xiàn)的次數(shù)是否高于商品單獨出現(xiàn)的評率,提升度和衡量購買X對購買Y的概率的提升作用。如下公式可見,如果X和Y相互獨立那么提升度為1,提升度越大,說明X->Y的關(guān)聯(lián)性越強 
1.2 關(guān)聯(lián)規(guī)則Apriori算法
發(fā)現(xiàn)頻繁項集 找出關(guān)聯(lián)規(guī)則

圖中有4個記錄,記錄項有1,2,3,4,5若干 首先先找出1項集對應(yīng)的支持度(C1),可以看出4的支持度低于最小支持閾值,先剪掉(L1)。 從1項集生成2項集,并計算支持度(C2),可以看出(1,5)(1,2)支持度低于最小支持閾值,先剪掉(L2) 從2項集生成3項集,(1,2,3)(1,2,5)(2,3,5)只有(2,3,5)滿足要求 沒有更多的項集了,就定制迭代
2. mlxtend實戰(zhàn)關(guān)聯(lián)規(guī)則
2.1 安裝
pip install mlxtend
2.2 簡單的例子
來看下數(shù)據(jù)集: import pandas as pd
item_list = [['牛奶','面包'],
['面包','尿布','啤酒','土豆'],
['牛奶','尿布','啤酒','可樂'],
['面包','牛奶','尿布','啤酒'],
['面包','牛奶','尿布','可樂']]
item_df = pd.DataFrame(item_list)數(shù)據(jù)格式處理,傳入模型的數(shù)據(jù)需要滿足bool值的格式 from mlxtend.preprocessing import TransactionEncode
te = TransactionEncoder()
df_tf = te.fit_transform(item_list)
df = pd.DataFrame(df_tf,columns=te.columns_)
計算頻繁項集 from mlxtend.frequent_patterns import apriori
# use_colnames=True表示使用元素名字,默認的False使用列名代表元素, 設(shè)置最小支持度min_support
frequent_itemsets = apriori(df, min_support=0.05, use_colnames=True)
frequent_itemsets.sort_values(by='support', ascending=False, inplace=True)
# 選擇2頻繁項集
print(frequent_itemsets[frequent_itemsets.itemsets.apply(lambda x: len(x)) == 2])
計算關(guān)聯(lián)規(guī)則 from mlxtend.frequent_patterns import association_rules
# metric可以有很多的度量選項,返回的表列名都可以作為參數(shù)
association_rule = association_rules(frequent_itemsets,metric='confidence',min_threshold=0.9)
#關(guān)聯(lián)規(guī)則可以提升度排序
association_rule.sort_values(by='lift',ascending=False,inplace=True)
association_rule
# 規(guī)則是:antecedents->consequents
3. 總結(jié)
關(guān)聯(lián)規(guī)則用于分析數(shù)據(jù)集各項之間的關(guān)聯(lián)關(guān)系,想一想啤酒和尿布的故事 三個重要概念:支持度,置信度和提升度 Apriori通過迭代先找1項集,用支持度過濾項集,逐步找出所有k項集 用置信度或提升度來選擇滿足的要求的規(guī)則 mlxtend對數(shù)據(jù)要求轉(zhuǎn)換成bool值才可用
作者簡介:wedo實驗君, 數(shù)據(jù)分析師;熱愛生活,熱愛寫作
贊 賞 作 者

更多閱讀
特別推薦

點擊下方閱讀原文加入社區(qū)會員
評論
圖片
表情
