關聯分析(5):Apriori Python實現

  • 2020 年 1 月 31 日
  • 筆記

關聯分析(3):Apriori R語言實現一文中,寫了如何使用R語言進行關聯分析,那在Python中如何實現呢?

1

Python實現

之前已經在關聯分析(1):概念及應用和關聯分析(2):Apriori產生頻繁項集介紹了關聯分析相關知識及Apriori算法原理,此處不再贅述,直接開始Python代碼實現。

通過使用efficient_apriori包的apriori(data, min_support, min_confidence)函數可幫我們快速實現關聯分析,其中data是要進行分析的數據,要求list類型,min_support表示最小支持度,min_confidence 表示。

數據情況

本例中我們使用的是UCI機器學習庫上下載的美國眾議院議員投票記錄數據,數據共有16列,首先對數據情況進行基本展示:

具體代碼

本例中我們設置最小支持度為0.3,最小置信度為0.9,使用時可根據情況調整。

import pandas as pd  import numpy as np  import operator  from efficient_apriori import aprior  #讀取數據  data = pd.read_csv("voting-records.csv",header=None)  #得到頻繁項集及關聯規則  itemsets, rules = apriori(data.values.tolist(), min_support=0.3,  min_confidence=0.9,max_length=10)  #分別根據置信度、支持度、提升度對規則進行排序  confidence = dict()  support = dict()  lift = dict()  for rule in rules:      confidence[rule] = rule.confidence      support[rule] = rule.support      lift[(rule)] = rule.lift      #rule.lhs,rule.rhs可用作提取規則的前件、後件  rules_sortbycon = sorted(confidence.items(),key=operator.itemgetter(1),reverse = True)  rules_sortbysup = sorted(support.items(),key=operator.itemgetter(1),reverse = True)  rules_sortbylift = sorted(lift.items(),key=operator.itemgetter(1),reverse = True)

2

結果

根據上方代碼,我們可以選擇根據置信度、支持度或提升度輸出相應規則,以置信度為例,得到的結果如下:

推薦文章

· Bagging算法(R語言)

· 靜態爬蟲與地址經緯度轉換(python)

· 特徵工程(一):前向逐步回歸(R語言)

· 聚類(三):KNN算法(R語言)

· 小案例(六):預測小偷行為(python)

· ggplot2:正負區分條形圖及美化