在关联分析(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
结果
根据上方代码,我们可以选择根据置信度、支持度或提升度输出相应规则,以置信度为例,得到的结果如下:
推荐文章