关联分析(5):Apriori Python实现

2020-01-31 11:19:29 浏览数 (1)

在关联分析(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,使用时可根据情况调整。

代码语言:javascript复制
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:正负区分条形图及美化

0 人点赞