關聯分析(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
結果
根據上方代碼,我們可以選擇根據置信度、支持度或提升度輸出相應規則,以置信度為例,得到的結果如下:

推薦文章