最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Python 關(guān)聯(lián)規(guī)則分析

 更新時間:2021年03月18日 10:53:28   作者:阿橙FM  
這篇文章主要介紹了Python 關(guān)聯(lián)規(guī)則分析的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下

1. 關(guān)聯(lián)規(guī)則

大家可能聽說過用于宣傳數(shù)據(jù)挖掘的一個案例:啤酒和尿布;據(jù)說是沃爾瑪超市在分析顧客的購買記錄時,發(fā)現(xiàn)許多客戶購買啤酒的同時也會購買嬰兒尿布,于是超市調(diào)整了啤酒和尿布的貨架擺放,讓這兩個品類擺放在一起;結(jié)果這兩個品類的銷量都有明顯的增長;分析原因是很多剛生小孩的男士在購買的啤酒時,會順手帶一些嬰幼兒用品。

不論這個案例是否是真實(shí)的,案例中分析顧客購買記錄的方式就是關(guān)聯(lián)規(guī)則分析法Association Rules。

關(guān)聯(lián)規(guī)則分析也被稱為購物籃分析,用于分析數(shù)據(jù)集各項之間的關(guān)聯(lián)關(guān)系。

1.1 基本概念

  • 項集:item的集合,如集合{牛奶、麥片、糖}是一個3項集,可以認(rèn)為是購買記錄里物品的集合。
  • 頻繁項集:顧名思義就是頻繁出現(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ī)則的實(shí)際價值,即使用規(guī)則后商品出現(xiàn)的次數(shù)是否高于商品單獨(dú)出現(xiàn)的評率,提升度和衡量購買X對購買Y的概率的提升作用。如下公式可見,如果X和Y相互獨(dú)立那么提升度為1,提升度越大,說明X->Y的關(guān)聯(lián)性越強(qiáng)

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算法的目標(biāo)是找到最大的K項頻繁集。Apriori算法從尋找1項集開始,通過最小支持度閾值進(jìn)行剪枝,依次尋找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)滿足要求
  • 沒有更多的項集了,就定制迭代

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

關(guān)聯(lián)規(guī)則目前在scikit-learn中并沒有實(shí)現(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表示使用元素名字,默認(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頻繁項集
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ù)特點(diǎn)進(jìn)行篩選,像開篇提到(啤酒->尿布)完全不同的品類之間的關(guān)聯(lián)。

筆者最近用關(guān)聯(lián)規(guī)則分析用戶的體檢報告記錄,也得出了關(guān)于各個病癥的有意義的關(guān)聯(lián),如并發(fā)癥,不同病癥相互影響等。

3. 總結(jié)

本分介紹關(guān)聯(lián)規(guī)則的基本概念和經(jīng)典算法Apriori,以及python的實(shí)現(xiàn)庫mlxtend使用。

總結(jié)如下:

  • 關(guān)聯(lián)規(guī)則用于分析數(shù)據(jù)集各項之間的關(guān)聯(lián)關(guān)系,想一想啤酒和尿布的故事
  • 三個重要概念:支持度,置信度和提升度
  • Apriori通過迭代先找1項集,用支持度過濾項集,逐步找出所有k項集
  • 用置信度或提升度來選擇滿足的要求的規(guī)則
  • mlxtend對數(shù)據(jù)要求轉(zhuǎn)換成bool值才可用

以上就是詳解Python 關(guān)聯(lián)規(guī)則分析的詳細(xì)內(nèi)容,更多關(guān)于Python 關(guān)聯(lián)規(guī)則分析的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python自省及反射原理實(shí)例詳解

    Python自省及反射原理實(shí)例詳解

    這篇文章主要介紹了Python自省及反射原理實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • 關(guān)于Series的index的方法和屬性使用說明

    關(guān)于Series的index的方法和屬性使用說明

    這篇文章主要介紹了關(guān)于Series的index的方法和屬性使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python設(shè)計模式之享元模式原理與用法實(shí)例分析

    Python設(shè)計模式之享元模式原理與用法實(shí)例分析

    這篇文章主要介紹了Python設(shè)計模式之享元模式原理與用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了享元模式的相關(guān)概念、原理、定義及使用方法,需要的朋友可以參考下
    2019-01-01
  • 解決pyttsx3無法封裝的問題

    解決pyttsx3無法封裝的問題

    今天小編就為大家分享一篇解決pyttsx3無法封裝的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 深入分析Python中Lambda函數(shù)的用法

    深入分析Python中Lambda函數(shù)的用法

    lambda函數(shù)是Python中常用的內(nèi)置函數(shù),又稱為匿名函數(shù)。和普通函數(shù)相比,它只有函數(shù)體,省略了def和return,使得結(jié)構(gòu)看起來更精簡。本文將詳細(xì)說說Lambda函數(shù)的用法,需要的可以參考一下
    2022-12-12
  • Python StringIO及BytesIO包使用方法解析

    Python StringIO及BytesIO包使用方法解析

    這篇文章主要介紹了Python StringIO及BytesIO包使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • Python裝飾器中@property使用詳解

    Python裝飾器中@property使用詳解

    大家好,本篇文章主要講的是Python裝飾器中@property使用詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Pandas數(shù)據(jù)合并的兩種實(shí)現(xiàn)方法

    Pandas數(shù)據(jù)合并的兩種實(shí)現(xiàn)方法

    本文主要介紹了Pandas數(shù)據(jù)合并的兩種實(shí)現(xiàn)方法,DataFrame數(shù)據(jù)合并主要使用merge()方法和concat()方法,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • 在PyTorch中Tensor的查找和篩選例子

    在PyTorch中Tensor的查找和篩選例子

    今天小編就為大家分享一篇在PyTorch中Tensor的查找和篩選例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • numpy中的converters和usecols用法詳解

    numpy中的converters和usecols用法詳解

    本文主要介紹了numpy中的converters和usecols用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05

最新評論

壤塘县| 东兴市| 日土县| 永平县| 福建省| 银川市| 绵竹市| 岐山县| 芮城县| 东明县| 凤山县| 延川县| 棋牌| 廉江市| 武宁县| 如皋市| 岱山县| 砀山县| 宝应县| 涞水县| 斗六市| 屯留县| 康定县| 定远县| 镇沅| 镇远县| 偃师市| 手游| 嵊州市| 同心县| 东平县| 靖边县| 扬州市| 习水县| 芜湖市| 神木县| 东光县| 邢台县| 济南市| 泰安市| 泗水县|