apriori

basic apriori method

六眼飞鱼酱① 提交于 2020-03-29 05:16:56
#===================================================================== # data and parameters | #===================================================================== db = {10:('a','c','d'), 20:('b','c','e'), 30:('a','b','c','e'), 40:('b','e')} db1 =[set(t) for t in db.values()] min_sup = 2 #===================================================================== # main function | #===================================================================== #--------------------------------------------------------------------- # scan DB once to get frequent 1-itemset | #----------------------------------

Apriori算法-频繁项集-关联规则

廉价感情. 提交于 2020-03-24 09:42:27
计算频繁项集: 首先生成一个数据集 def loadDataSet(): return [[ 1 , 3 , 4 ], [ 2 , 3 , 5 ], [ 1 , 2 , 3 , 5 ], [ 2 , 5 ]] 测试数据集dataset有了,第一步,我们要根据数据集dataset得到一个集合C1,集合C1中包含的元素为dataset的无重复的每个单元素,候选项集。 def createC1(dataset): C1 = [] for transaction in dataset: for item in transaction: if not [item] in C1: C1.append([item]) C1.sort() return map(frozenset, C1) 返回的数据map计算得到一个元素为frozenset的集合。 为什么要转成frozenset? 原因两个: 1. 这个集合是从dataset中抽取出所有无重复的数据集,是固定的,应该是不可变的类型。 2. frozenset可以作字典 可以看一下返回结果: 第二步,计算C1<key>每个元素key的支持度。 支持度= count(key) / sizeof(C1) def scanD(D, Ck, minSupport): ssCnt = {} for tid in D: for can in Ck: if

基于Python的机器学习实战:Apriori

ⅰ亾dé卋堺 提交于 2020-03-22 09:38:39
目录: 1.关联分析 2. Apriori 原理 3. 使用 Apriori 算法来发现频繁集 4.从频繁集中挖掘关联规则 5. 总结 1.关联分析 返回目录 关联分析是一种在大规模数据集中寻找有趣关系的任务。这种关系表现为两种形式: 1.频繁项集(frequency item sets):经常同时出现的一些元素的集合; 2.关联规则(association rules): 意味着两种元素之间存在很强的关系。 下面举例来说明上面的两个概念: 表1 一个来自Hole Foods天食品店的简单交易清单 交易号码 商品 0 豆奶, 莴苣 1 莴苣,尿布,葡萄酒,甜菜 2 莴苣,尿布,葡萄酒,橙汁 3 莴苣,豆奶,尿布,葡萄酒 4 莴苣,豆奶,尿布,橙汁 频繁项集是指经常出现在一起的元素的集合,上表中的集合 {葡萄酒,尿布,豆奶} 就是频繁项集的一个例子。同样可以找到如 “尿布 --> 葡萄酒”的关联规则,意味着如果有人买了尿布,就很可能也会买葡萄酒。使用频繁项集和关联规则,商家可以更好地理解顾客的消费行为,所以大部分关联规则分析示例来自零售业。 理解关联分析首先需要搞清楚下面三个问题: 1.如何定义这些有用的关系? 2.这些关系的强弱程度又是如何定义? 3.频繁的定义是什么? 要回答上面的问题,最重要的是理解两个概念:支持度和可信度。 支持度:一个项集的支持度(support

浅谈(11)— Apriori算法、FP Growth算法

≡放荡痞女 提交于 2020-03-17 18:59:00
1、Apriori算法   Apriori算法是常用的用于挖掘出数据关联规则的算法,它用来找出数据值中频繁出现的数据集合,找出这些集合的模式有助于我们做一些决策。   Apriori算法采用了迭代的方法,先搜索出候选1项集及对应的支持度,剪枝去掉低于支持度的1项集,得到频繁1项集。然后对剩下的频繁1项集进行连接,得到候选的频繁2项集,筛选去掉低于支持度的候选频繁2项集,得到真正的频繁二项集,以此类推,迭代下去,直到无法找到频繁k+1项集为止,对应的频繁k项集的集合即为算法的输出结果。   可见这个算法还是很简洁的,第i次的迭代过程包括扫描计算候选频繁i项集的支持度,剪枝得到真正频繁i项集和连接生成候选频繁i+1项集三步。   一个项集的 支持度(support) 被定义为数据集中包含该项集的记录所占的比例。比如,图2中{豆奶}的支持度为4/5。支持度是针对项集来说的,因此可以定义一个最小支持度,而只保留满足最小支持度的项集。 可信度 或置信度(confidence)是针对一条诸如{尿布}->{葡萄酒}的关联关系来定义的。这条规则的可信度被定义为“支持度({尿布,葡萄酒})/支持度({尿布})”           算法步骤:    输入:数据集合D,支持度阈值 α α    输出:最大的频繁k项集    1)扫描整个数据集,得到所有出现过的数据,作为候选频繁1项集。k=1

关联规则挖掘-Apriori算法

江枫思渺然 提交于 2020-02-15 23:45:20
1. 搞懂关联规则中的几个重要概念:支持度、置信度、提升度; 2. Apriori 算法的工作原理; 3. 在实际工作中,我们该如何进行关联规则挖掘。 一、搞懂关联规则中的几个概念(支持度、置信度、提升度) Apriori 算法的核心就是理解频繁项集和关联规则。在算法运算的过程中,还要重点掌握对 支持度、置信度和提升度的理解。 超市购物的例子,下面是几名客户购买的商品列表: 1.1、什么是支持度呢? 支持度是个百分比,它指的是某个商品组合出现的次数与总次数之间的比例。支持度越 高,代表这个组合出现的频率越大。 在这个例子中,我们能看到“牛奶”出现了 4 次,那么这 5 笔订单中“牛奶”的支持度就 是 4/5=0.8。 同样“牛奶 + 面包”出现了 3 次,那么这 5 笔订单中“牛奶 + 面包”的支持度就是 3/5=0.6。 1.2什么是置信度呢? 它指的就是当你购买了商品 A,会有多大的概率购买商品 B,在上面这个例子中: 置信度(牛奶→啤酒)=2/4=0.5,代表如果你购买了牛奶,有多大的概率会购买啤酒? 置信度(啤酒→牛奶)=2/3=0.67,代表如果你购买了啤酒,有多大的概率会购买牛奶? 我们能看到,在 4 次购买了牛奶的情况下,有 2 次购买了啤酒,所以置信度 (牛奶→啤酒)=0.5,而在 3 次购买啤酒的情况下,有 2 次购买了牛奶,所以置信度(啤酒→牛奶)=0.67。

Apriori算法(Python篇)

别等时光非礼了梦想. 提交于 2020-02-06 11:57:36
关联规则挖掘是数据挖掘中最活跃的研究方法之一, 最早是针对购物篮分析问题提出的,其目的是为了发现交易数据库中不同商品之间的联系规则,这些规则刻画了顾客购买行为模式,可以用来指导商家科学地安排进货,库存以及货架设计等。 而Apriori算法是第一个关联规则挖掘算法,也是最经典的算法。 以如下的场景为例,使用Python快速实现Apriori算法: 1.场景与需求 一家超市的业务数据库中有销售订单表如下: id为订单号,name为商品名称 来源: CSDN 作者: OMax 链接: https://blog.csdn.net/osvyxcbttw/article/details/104191941

数据上的关联规则

点点圈 提交于 2020-02-01 08:50:59
关联规则挖掘的目标是发现数据项集之间的关联关系或相关关系,是数据挖掘中的一个重要的课题。 先简单介绍一下关联规则挖掘中涉及的几个基本概念: 定义1:项与项集 数据库中不可分割的最小单位信息,称为项目,用符号i表示。项的集合称为项集。设集合I={i1, i2, ..., ik}是项集,I中项目的个数为k,则集合I称为k项集。 定义2:事务 设I={i1, i2, ..., ik}是由数据库中所有项目构成的集合,一次处理所含项目的集合用T表示,T={t1, t2, ..., tn}。每一个包含ti子项的项集都是I子集。 定义3:项集的频数(支持度计数) 包括项集的事务数称为项集的频数(支持度计数)。 定义4:关联规则 关联规则是形如X=>Y的蕴含式,其中X、Y分别是I的真子集,并且X∩Y=Ø。X称为规则的前提,Y称为规则的结果。关联规则反映X中的项目出现时,Y中的项目也跟着出现的规律。 定义5:关联规则的支持度(Support) 关联规则的支持度是交易集中同时包含的X和Y的交易数与所有交易数之比,记为support(X=>Y),即support(X=>Y)=supportX∪Y=P(XY)。支持度反映了X和Y中所含的项在事务集中同时出现的概率。 定义6:关联规则的置信度(Confidence) 关联规则的置信度是交易集中包含X和Y的交易数与所有包含X的交易数之比

python Apriori算法1

蹲街弑〆低调 提交于 2020-02-01 04:23:18
#参考Link:https://www.jianshu.com/p/2ee0a247a8cc #创建一个数据集合 def loadDataSet ( ) : #return [[1,3,4],[2,3,5],[1,2,3,5],[2,5]] return apriori_metadata # 创建一项集 # 所有元素转换为不可变的字典,放到列表中 def createC1 ( dataSet ) : c1 = [ ] for trans in dataSet : for item in trans : if not [ item ] in c1 : c1 . append ( [ item ] ) c1 . sort ( ) # [1,2,3,4,5] return list ( map ( frozenset , c1 ) ) #[{1},{2},{3},{4},{5}] # 获取满足最小支持度的候选集与其支持度 # 过滤掉不符合支持度的集合 # 返回 频繁项集列表retList 所有元素的支持度字典 # D = [{1, 3, 4}, {2, 3, 5}, {1, 2, 3, 5}, {2, 5}] # Ck 是k项集 example:1-项集 [{1},{2},{3},{4},{5}] # minSupport最小支持度 def getSetAndSupport ( D ,