當前位置:
首頁 > 知識 > 用Python分析購物籃

用Python分析購物籃

用Python分析購物籃

Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。

用Python分析購物籃

前言

對於python分析師來說有許多數據分析工具,但是知道在特定情況下使用哪個數據分析工具是非常考驗人的。一種有用的(但有點被忽視)的技術稱為關聯分析,它嘗試在大型數據集中找到事物的通用運行模式。其中一個具體的應用就是市場籃子分析,其典型案例就是「啤酒和尿布」,基本思路就是大型零售商能夠挖掘人們的交易數據,並找到一個意想不到的購買啤酒和嬰兒尿布的人的購買模式。

不幸的是,這個案例很可能是數據領域的傳奇,然而,它是數據挖掘得到實用的經典說明。雖然這些數據通常用於查看銷售交易,不過一些基本的分析也可以應用於其他情況,例如點擊流跟蹤,備件訂購和在線推薦引擎 等。

如果你對Python數據科學世界有一些基本的了解,或許你的第一個想法就是使用scikit-learn完成一個現成的演算法。然而,scikit-learn不支持這種演算法。不過由Sebastian Raschka開發的MLxtend庫可以用於提取複雜數據來實現進一步的數據分析。

本文接下來將演示一個使用此庫分析在線零售數據集的示例,並嘗試查找有趣的購買組合。讀完本文您應該熟悉將其應用於自己的數據集的基本方法。

為什麼要進行關聯分析?

在當今世界,有許多複雜的數據分析方法(聚類,回歸,神經網路,隨機森林,SVM等)。這些方法的難點在於它們需要相當多的數據準備和功能特性來獲得好的結果。換句話說,它們可以非常強大,但是需要很多知識才能完成。

數據關聯分析的數學概念非常容易理解,易於向非技術人員解釋。此外,它是一種無監督的學習工具,可以查找出隱藏的模式,因此對數據準備和功能特性的要求很低。對於某些數據探索案例來說,這是一個很好的開始,並且可以使用其他方法深入挖掘數據。

此外,MLxtend中的python代碼對於經常接觸scikit-learn和pandas的人來說非常容易理解。綜上所述,我認為這是一個非常有用的工具用以熟悉並幫助您解決數據分析問題。

一個簡單的說法 - 在技術上,市場籃子分析只是一個關聯分析的應用,本文將會互換使用關聯分析和市場籃子分析這兩個術語。

關聯分析101

這有幾個術語對於理解關聯分析很重要。這裡的內容對那些想理解背後數學原理及演算法細節的人來說是一個很好的參考。

關聯規則通常如下:{尿布} - > {啤酒},這代表在同一筆交易中購買尿布的客戶和購買啤酒之間存在很強的關係。

在上面的例子中,{尿布}是前提,{啤酒}是結果。前提和後果可以有多個項目。換句話說,{尿布,膠囊} - > {啤酒,晶元}是一個有效的規則。

支持度用以確定規則可以用於給定數據集的頻繁程度。在許多情況下,您可能希望尋求高的支持度以確保它是一個有用的關係。但是,在「隱藏」關係中,則可能會出現低支持度的情況。

置信度是對規則可靠性的度量。上述例子中的0.5的置信度意味著在購買了尿布和膠囊的情況下,有50%的可能性購買啤酒和晶元。對於產品推薦來說,50%的置信度可能是完全可以接受的,但在醫療情況下,這還是有點低的。

提升度是兩個獨立規則下支持度的比率。基本的經驗法則是提升度接近1表示規則完全獨立。提升度大於 1可以指示出有用的規則模式。

最後一個注意事項與數據有關。此分析要求將交易的所有數據包含在1行中,並且項目應為一位有效編碼,具體的可以看MLxtend文檔示例:

用Python分析購物籃

本文的具體數據來自UCI機器學習存儲庫,代表了2010-2011年英國零售商的交易數據。這主要代表對批發商的銷售,所以它與消費者購買模式略有不同,但這仍然是一個有用的案例研究。

代碼

MLxtend可以使用pip安裝,在嘗試執行以下代碼之前需要完成MLxtend的安裝。一旦安裝完畢,下面的代碼顯示了如何讓它運行。我已經記錄下詳細的過程。

首先導入pandas和MLxtend並讀取數據:

用Python分析購物籃

用Python分析購物籃

開始之前先做一些處理。刪掉一些描述用的空格和沒有發票編號的行,並刪除信用交易(發票編號包含C)。

用Python分析購物籃

完成之後,我們需要將每個產品進行一位有效編碼,將每個項目合併為一個事務。為了使數據集小一些,我只看法國的銷售。然而,在下面的其他代碼中,我將這些結果與德國的銷售進行比較。進一步的與其它國家之間比較將是一件有趣的調查。

用Python分析購物籃

以下是前幾列的樣子(注意,我在列中添加了一些數字來說明這個概念 - 這個例子中的實際數據全是0):

用Python分析購物籃

數據中有很多零,但是我們需要確保將任何正值轉換為1,而將小於0的值設置為0。此步驟將完成數據的一位有效編碼,並刪除郵資列(因為收費不是我們希望探討的):

用Python分析購物籃

現在數據結構正確,我們可以生成支持至少7%的頻繁項目集(使用這個數字以便我可以得到足夠的實例):

用Python分析購物籃

最後一步是生成相應的支持度,置信度和提升度規則。

用Python分析購物籃

用Python分析購物籃

以上就是所有,用apriori表示頻繁項目,association_rules構建規則。

現在,棘手的部分是弄清楚這告訴我們什麼。例如,我們可以看到有很多規則具有很高的提升度,這意味著它的發生頻率要高於交易和產品組合數量的預期值。我們也可以看到幾個置信度也很高的地方。這部分分析是專業知識將派上用場的地方,不過我不具備這方面的知識,只是想找幾個說明性的例子而已。

我們可以使用標準的pandas代碼來過濾數據。在這種情況下,尋找一個大提升度(6)和高置信度(.8):

用Python分析購物籃

用Python分析購物籃

在查看規則時,似乎綠色和紅色鬧鐘是一起購買的,紅紙杯,餐巾紙和紙板是以總體概率提高的方式一起購買的。

這時,你可能想知道,我們有多少機會可以通過推薦關聯商品來促進商品的銷售。例如,我們可以看到,銷售340個綠色鬧鐘,但只有316個紅色鬧鐘,所以也許我們可以通過推薦帶動更多的紅色鬧鐘的銷售?

用Python分析購物籃

有趣的是國家的變化會影響購買組合,我們來看看德國有什麼流行的組合呢?

用Python分析購物籃

用Python分析購物籃

似乎除了David Hasselhoff以外,德國人喜歡Plaster和Woodland Animails。

在正規的項目中,熟悉數據的分析師可能會有十幾個不同的問題。我沒有將此分析複製到其它的國家或客戶組合,但是有了上述的基本pandas代碼,其他分析過程也很容易完成。

總結

關聯分析非常好的一方面是它很容易運行,相對容易解釋。如果您無法實現MLxtend和關聯分析,則使用基本Excel分析找到這些模式將非常困難。使用python和MLxtend,分析過程相對簡單,在Python中,您可以訪問python生態系統中的所有其他可視化技術和數據分析工具。

最後,我建議您查看MLxtend庫的其餘部分。如果您在做關於sci-kit的工作,可以了解如何熟悉MLxtend,以及如何增加數據科學工具包中的一些現有工具。


英文原文:http://pbpython.com/market-basket-analysis.html
譯者:Mr Chen

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python部落 的精彩文章:

榨乾 Python 代碼的性能——第一部分之環境設置
在Python中自定義類的創建方式
在Python中使用其他語言的列印語句
讓Python腳本成為守護進程
像寫散文一樣寫代碼

TAG:Python部落 |

您可能感興趣

『GreenChing』購物分享
她@購物 | 一周購物折扣信息:Costco、Dyson、Michael Kors
Photoshop設計逼真的購物袋APP圖標
BestMonday ZARA購物分享
她@購物 | 一周購物折扣信息:Costco、Coach、Adidas
EyeKandy推出AR購物平台Point&Place旨在快速添加AR商品
她@購物 | 一周購物折扣信息:Costco、SW美鞋、Origins
她@購物 | 一周購物折扣信息:Costco、MAC、Puma
她@購物 | 一周購物折扣信息 Costco,The Bay低至2折
eBay的HeadGaze 技術讓你在 iPhone X 上只用動動頭就能購物
【她 · 購物】一周購物折扣信息:Costco、kate spade、Nasty Gal 低至2折
topshop優衣庫購物分享(上)
她@購物 | 一周購物折扣信息:Costco、Coach、Miu Miu 低至兩折
【她 · 購物】一周購物折扣信息:Costco、lululemon、Samsonite低至3折
Pinterest將向更多賣家開放「Shopping Ads」購物廣告功能
亞馬遜關閉 Instagram 式購物分享平台 Amazon Spark
傳 Instagram 即將推出購物APP
Greenlight:AR將助力Instagram成為大型購物平台
肯豆的爸爸Caitlyn Jenner在Malibu出街購物
loewe 羅意威 Flamenco Knot Tote Bag購物袋