十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)Python中有哪些關(guān)聯(lián)規(guī)則,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
目前成都創(chuàng)新互聯(lián)已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、東興網(wǎng)站維護等服務(wù),公司將堅持客戶導向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
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算法
關(guān)聯(lián)規(guī)則方法的步驟如下:
發(fā)現(xiàn)頻繁項集
找出關(guān)聯(lián)規(guī)則
Apriori算法是經(jīng)典的關(guān)聯(lián)規(guī)則算法。Apriori算法的目標是找到最大的K項頻繁集。Apriori算法從尋找1項集開始,通過最小支持度閾值進行剪枝,依次尋找2項集,3項集直到?jīng)]有更過項集為止。
下面是一個案例圖解:

圖中有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)滿足要求
沒有更多的項集了,就定制迭代
關(guān)聯(lián)規(guī)則目前在scikit-learn中并沒有實現(xiàn)。這里介紹另一個python庫mlxtend。
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

選擇出來關(guān)聯(lián)規(guī)則之后,根據(jù)提升度排序后,可能最高提升度的規(guī)則是在我們常識范圍內(nèi),那這個規(guī)則的價值就不高。所以我們要在產(chǎn)生的規(guī)則中根據(jù)業(yè)務(wù)特點進行篩選,像開篇提到(啤酒->尿布)完全不同的品類之間的關(guān)聯(lián)。
上述就是小編為大家分享的Python中有哪些關(guān)聯(lián)規(guī)則了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。