利用Python進行市場購物籃分析——入門篇
python分析師可以使用許多數據分析工具,但知道在哪些情況下使用哪些數據分析工具可能很困難。一種有用的(但卻被忽視)的技術稱為關聯分析,它嘗試在大型數據集中查找相關商品之間的關聯。一個具體的應用通常稱為市場籃子分析。最經典引用的市場籃子分析的例子是所謂的「啤酒和尿布」案例。基本的故事是,大型零售商能夠挖掘他們的交易數據,並找到一個意想不到的購買啤酒和嬰兒尿布的購買模式。
不幸的是,這個故事很可能是一個數據城市傳奇。然而,它是挖掘事務數據可以獲得的商業價值的示例。
如果你對Python數據科學有一些基本的了解,可能你的第一個傾向就是考慮scikit學習一個現成的演算法。然而,scikit-learn不支持這種演算法。幸運的是,Sebastian Raschka 提供了非常有用的具有Apriori演算法的MLxtend庫的,以方便我們進一步分析我們所掌握的數據。
接下來我將演示一個使用此庫來分析相對較大的在線零售數據集的示例,並嘗試查找有趣的購買組合。在本文結尾處,我希望你能掌握將其應用於你自己的數據集的基本方法。
想要系統學習python和免費學習資料的 可以加裙 四七四五三四九五一
為什麼是關聯分析?
在當今的世界,有許多複雜的數據分析方法(聚類,回歸,神經網路,隨機森林,SVM等)。這些方法中的很多種所面臨的挑戰在於它們可能難以調整,並需要相當多的數據準備和特徵工程才能獲得好的結果。換句話說,它們都非常強大,但需要掌握很多知識才能正確實現。
關聯分析對數學知識的掌握要求非常低,而且結果易於向非技術人員解釋。此外,它是一種無監督的學習工具,可以查找隱藏的模式,因此對數據準備和特徵工程的需求有限。對於某些數據探索案例來說,這是一個很好的開始,並且可以發現使用其他方法深入了解數據的方式。
另外一個額外的好處,MLxtend庫中的python實現對於非常熟悉scikit-learn 和pandas應該是非常簡單的。由於所有這些原因,我認為這是一個有用的工具來幫助你解決數據分析實際問題。
關聯分析101
理解關聯分析中常用使用的幾個術語很重要。在介紹數據挖掘是為那些有興趣了解這些定義和演算法實現的人,讓他們對關聯分析的數學方法有一個基本的概念。
關聯規則通常如下: - > ,這意味著在同一交易中購買尿布的客戶之間和購買啤酒之間存在很強的關係。
在上面的例子中,是前提,是後果。前提和後果可以包含很多內容,換句話說,就是類似 - >也是一個有效的關聯規則。
信心是對關聯規則可靠性的度量。上述例子中有0.5的信心意味著在購買了Diaper和Gum的情況下,有50%的可能去購買Beer和Chips。對於產品推薦,50%的置信度可能是完全可以接受的,但在醫療情況下,此級別可能不夠高。
如果兩個規則是獨立的,Lift是觀察到的支持與預期的支持的比率(lift解釋詳見維基百科)。基本的經驗法則是Lift接近1表示規則完全獨立。Lift> 1通常更「有趣」,可以表示這是有用的規則模式。
最後一個注意事項,與數據有關。此分析要求將交易的所有數據包含在1行中,並且編碼方式應為one-hot編碼(了解one-Hot編碼)。了解MLxtend 的文檔對了解如何運用是非常有用:
本文的具體數據來自UCI機器學習存儲庫,數據代表了2010-2011年英國零售商的交易數據。這主要代表的是批發商的銷售數據,所以它與消費者購買模式略有不同,但仍然是一個有用的案例研究。
代碼講解
可以使用pip安裝MLxtend,只有安裝了MLxtend下面的代碼才能真正運行。一旦安裝完畢,下面的代碼將會開始工作。我已
經將源代碼上傳至Github,以方便你的下載。
獲取我們的Pandas和MLxtend代碼導入並讀取數據:
我們需要做一點數據處理。首先,一些數據描述中具有需要刪除的空格。我們還會刪除沒有發票編號的行,並刪除信用交易(發票編號包含C)。
數據清理完成後,我們需要將每個產品進行one-hot編碼。為了保持數據集小,我選擇只是看法國的銷售記錄。然而,在下面的其他代碼中,我將這些結果與德國的銷售進行比較。進一步的國家比較將會是有趣的調查。
以下是前幾列的樣子(注意,我在列中添加了一些數字來說明這個概念,這個例子中的實際數據全是0).
數據中有很多零,但是我們還需要確保將任何正則轉換為1,而將0設置為0。此步驟將完成數據的one-hot編碼,並刪除郵資列:
既然數據的結構是正確,我們可以生成支持至少7%的頻繁項目集(選擇這個數字,可以幫助我得到更多有用的例子。)
最後一步是產生相應的信心和提升的規則:
這就是這個項目的一切!
現在,最棘手的部分是弄清楚我們得到的這些結論告訴我們什麼了。可能絕大多數程序猿不太關注。例如,我們可以發現很多關聯規則具有很高的提升價值,這意味著它的發生頻率可能會高於交易和產品組合數量的預期值。這部分分析是行業知識將派上用場的地方。由於我沒有,所以我只是想找幾個說明性的例子。
我們可以使用標準的pandas code來過濾數據幀。在這種情況下,尋找一個lift(6)和高信度(.8):
在查看規則時,可以發現似乎綠色和紅色鬧鐘是一起購買的,紅紙杯,餐巾紙和紙板是以總體概率提高的方式一起購買的。
您可能想要看看有多大的機會可以使用一種產品的受歡迎程度來推動另一種產品的銷售。例如,我們可以看到,我們銷售340個綠色鬧鐘,但只有316個紅色鬧鐘,所以也許我們可以通過科學的方法來推動更多的紅色鬧鐘銷售。
我們來看看德國有什麼流行的組合呢?
似乎除了大衛·哈塞爾夫以外,德國人喜歡錫太太雄和林地動物的Plaster。
在非常認真的情況下,熟悉數據的分析師可能會有十幾個不同的問題,即這種類型的分析可以發揮商業價值。我沒有將此分析複製到額外的國家或客戶組合,但是由於上述基本的熊貓代碼,整個過程將相對簡單。
想要系統學習python和免費學習資料的 可以加裙 四七四五三四九五一


※怎樣才能成為一名20K以上的高級JAVA工程師
※程序員回到家的生活狀態
※使用Python編寫程序求解數獨遊戲答案
TAG:IT技術java交流 |
※花旗銀行將Python納入分析師培訓體系
※利用Python進行數據分析之數據規整化
※關於Sharpay ICO的深入分析
※Mozilla Rhino 反序列化漏洞 POC 分析
※主打生物力學分析,動捕創企DARI Motion被收購
※【網路研討會】通過PowerVR圖形內核引入PVRTune Complete進行性能分析
※Ruff Chain 創始人 Roy Li:區塊鏈技術的運用及發展趨勢分析
※Python商務辦公——python+pandas高效實現Excel文件合併與分析
※思科計劃收購雲Wi-Fi分析提供商July Systems
※世界盃:用Python分析熱門奪冠球隊
※Google收購Cask Data,進一步強化大數據分析能力
※Python和Scala的類繼承關係分析
※用Gaussian做IRC分析
※MariaDB收購大型分析公司MammothDB
※深入分析 ThreadLocal 內存泄漏問題
※Python數據分析與挖掘所需的Pandas常用知識
※區塊鏈共識機制分析——論PoW,PoS,DPos和DAG的優缺點
※Memcache UDP反射放大攻擊技術分析
※深入分析利用宏代碼傳播NetwiredRC和Quasar RAT的惡意RTF文檔
※Nesto—Hulu用戶分析平台的OLAP引擎