溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python關(guān)聯(lián)規(guī)則是什么

發(fā)布時(shí)間:2022-05-25 11:02:31 來(lái)源:億速云 閱讀:165 作者:zzz 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“Python關(guān)聯(lián)規(guī)則是什么”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Python關(guān)聯(lián)規(guī)則是什么”吧!

1.1 基本概念

  •  項(xiàng)集:item的集合,如集合{牛奶、麥片、糖}是一個(gè)3項(xiàng)集,可以認(rèn)為是購(gòu)買記錄里物品的集合。

  •  頻繁項(xiàng)集:顧名思義就是頻繁出現(xiàn)的item項(xiàng)的集合。如何定義頻繁呢?用比例來(lái)判定,關(guān)聯(lián)規(guī)則中采用支持度和置信度兩個(gè)概念來(lái)計(jì)算比例值

  •  支持度:共同出現(xiàn)的項(xiàng)在整體項(xiàng)中的比例。以購(gòu)買記錄為例子,購(gòu)買記錄100條,如果商品A和B同時(shí)出現(xiàn)50條購(gòu)買記錄(即同時(shí)購(gòu)買A和B的記錄有50),那邊A和B這個(gè)2項(xiàng)集的支持度為50%   

  •  置信度:購(gòu)買A后再購(gòu)買B的條件概率,根據(jù)貝葉斯公式,可如下表示:  

Python關(guān)聯(lián)規(guī)則是什么

  •  提升度:為了判斷產(chǎn)生規(guī)則的實(shí)際價(jià)值,即使用規(guī)則后商品出現(xiàn)的次數(shù)是否高于商品單獨(dú)出現(xiàn)的評(píng)率,提升度和衡量購(gòu)買X對(duì)購(gòu)買Y的概率的提升作用。如下公式可見(jiàn),如果X和Y相互獨(dú)立那么提升度為1,提升度越大,說(shuō)明X->Y的關(guān)聯(lián)性越強(qiáng)

1.2 關(guān)聯(lián)規(guī)則Apriori算法

關(guān)聯(lián)規(guī)則方法的步驟如下:

  •  發(fā)現(xiàn)頻繁項(xiàng)集

  •  找出關(guān)聯(lián)規(guī)則

Apriori算法是經(jīng)典的關(guān)聯(lián)規(guī)則算法。Apriori算法的目標(biāo)是找到最大的K項(xiàng)頻繁集。Apriori算法從尋找1項(xiàng)集開(kāi)始,通過(guò)最小支持度閾值進(jìn)行剪枝,依次尋找2項(xiàng)集,3項(xiàng)集直到?jīng)]有更過(guò)項(xiàng)集為止。

下面是一個(gè)案例圖解:

Python關(guān)聯(lián)規(guī)則是什么

  •  圖中有4個(gè)記錄,記錄項(xiàng)有1,2,3,4,5若干

  •  首先先找出1項(xiàng)集對(duì)應(yīng)的支持度(C1),可以看出4的支持度低于最小支持閾值,先剪掉(L1)。

  •  從1項(xiàng)集生成2項(xiàng)集,并計(jì)算支持度(C2),可以看出(1,5)(1,2)支持度低于最小支持閾值,先剪掉(L2)

  •  從2項(xiàng)集生成3項(xiàng)集,(1,2,3)(1,2,5)(2,3,5)只有(2,3,5)滿足要求

  •  沒(méi)有更多的項(xiàng)集了,就定制迭代

2. mlxtend實(shí)戰(zhàn)關(guān)聯(lián)規(guī)則

關(guān)聯(lián)規(guī)則目前在scikit-learn中并沒(méi)有實(shí)現(xiàn)。這里介紹另一個(gè)python庫(kù)mlxtend。

2.1 安裝

pip install mlxtend

2.2 簡(jiǎn)單的例子

  •  來(lái)看下數(shù)據(jù)集: 

import pandas as pd   item_list = [['牛奶','面包'],       ['面包','尿布','啤酒','土豆'],       ['牛奶','尿布','啤酒','可樂(lè)'],       ['面包','牛奶','尿布','啤酒'],       ['面包','牛奶','尿布','可樂(lè)']]   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_)

Python關(guān)聯(lián)規(guī)則是什么

  • 計(jì)算頻繁項(xiàng)集

from mlxtend.frequent_patterns import apriori  # use_colnames=True表示使用元素名字,默認(rèn)的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頻繁項(xiàng)集  print(frequent_itemsets[frequent_itemsets.itemsets.apply(lambda x: len(x)) == 2])

Python關(guān)聯(lián)規(guī)則是什么

  •  計(jì)算關(guān)聯(lián)規(guī)則   

from mlxtend.frequent_patterns import association_rules      # metric可以有很多的度量選項(xiàng),返回的表列名都可以作為參數(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

Python關(guān)聯(lián)規(guī)則是什么

選擇出來(lái)關(guān)聯(lián)規(guī)則之后,根據(jù)提升度排序后,可能最高提升度的規(guī)則是在我們常識(shí)范圍內(nèi),那這個(gè)規(guī)則的價(jià)值就不高。所以我們要在產(chǎn)生的規(guī)則中根據(jù)業(yè)務(wù)特點(diǎn)進(jìn)行篩選,像開(kāi)篇提到(啤酒->尿布)完全不同的品類之間的關(guān)聯(lián)。

到此,相信大家對(duì)“Python關(guān)聯(lián)規(guī)則是什么”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI