Apriori算法基本概念以及原理解析
Apriori算法中几个重要的概念
A—>B:
支持度: P(A^B) 表示A和B同时发生时的概率,没有先后顺序。
可信度或置信度: P(B|A) 表示A发生时,B发生的概率,有先后顺序。
P(B|A) = P(A^B)/P(A)
频繁项集:满足最小支持度阀值的事件集,如果事件里面有k个元素,就是频繁k项集。频繁项集通俗点来说,就是经常同时出现的一些元素的集合。
Apriori算法原理
AprioriApriori 的原理:如果某个项集是频繁项集,那么它所有的子集也是频繁的。
即如果 {0,1} 是频繁的,那么 {0}, {1} 也一定是频繁的。
Apriori算法步骤
- 发现频繁项集(循环,从a到g产生候选集后,会回到扫描元素,由产生频繁k项集到循环后产生频繁k+1项集)
a.扫描元素
b.计算支持度
c.统计筛选
d.产生频繁项集
e.自链接
f.减枝
g.产生候选集 - 产生关联规则
Apriori算法原理(python版)
class Apriori:@classmethoddef caculate(cls, dataSet, minSupport=0.5):C1 = cls.createC1(dataSet)# 将dataSet集合化,以满足scanD的格式要求# D = map(set, dataSet)L1, supportData = cls.scanD(dataSet, C1, minSupport)L = [L1]# 最初的L1中的每个项集含有一个元素,新生成的# 项集应该含有2个元素,所以 k=2k = 2while (len(L[k - 2]) > 0):Ck = cls.aprioriGen(L[k - 2], k)Lk, supK = cls.scanD(dataSet, Ck, minSupport)# 将新的项集的支持度数据加入原来的总支持度字典中supportData.update(supK)# 将符合最小支持度要求的项集加入LL.append(Lk)# 新生成的项集中的元素个数应不断增加k += 1# 返回所有满足条件的频繁项集的列表,和所有候选项集的支持度信息return L, supportData@classmethoddef createC1(self, dataSet):'''构建初始候选项集的列表,即所有候选项集只包含一个元素,C1是大小为1的所有候选项集的集合'''C1 = []for transaction in dataSet:for item in transaction:if not [item] in C1:C1.append([item])C1.sort()return map(frozenset, C1)@classmethoddef aprioriGen(cls, Lk, k):'''由初始候选项集的集合Lk生成新的生成候选项集,k表示生成的新项集中所含有的元素个数'''retList = []lenLk = len(Lk)for i in range(lenLk):for j in range(i + 1, lenLk):L1 = list(Lk[i])[: k - 2]L2 = list(Lk[j])[: k - 2]L1.sort()L2.sort()if L1 == L2:retList.append(Lk[i] | Lk[j])return retList@classmethoddef scanD(self, D, Ck, minSupport):'''计算Ck中的项集在数据集合D(记录或者transactions)中的支持度,返回满足最小支持度的项集的集合,和所有项集支持度信息的字典。'''ssCnt = {}l_Ck = list(Ck)for tid in D:# 对于每一条transactionfor can in l_Ck:# 对于每一个候选项集can,检查是否是transaction的一部分# 即该候选can是否得到transaction的支持if can.issubset(tid):if ssCnt.get(can) == None: ssCnt[can] = 1else: ssCnt[can] += 1numItems = float(len(D))retList = []supportData = {}for key in ssCnt:# 每个项集的支持度support = ssCnt[key]/numItems# 将满足最小支持度的项集,加入retListif support >= minSupport:retList.insert(0, key)else:#print(str(key) + "支持度:" + str(support)+ ",小于最小支持度:" + str(minSupport))pass# 汇总支持度数据supportData[key] = supportreturn retList, supportData
Apriori算法基本概念以及原理解析相关推荐
- 分水岭算法c语言,分水岭算法的概念及原理
(转至网络) 分水岭算法的概念及原理 分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值 ...
- K8S 快速入门(一)虚拟化、容器化构建云计算平台的基本概念及原理解析
本章主题 1.认识kubernetes (k8s) 在企业中应用场景? ----- 为什么要学习K8s?? 2.云技术(云计算平台) - 虚拟化及虚拟化基本概念及原理 3.云技术(云计算平台) - 容 ...
- matlab实战系列之人工鱼群算法求解TSP问题原理解析(下篇源码解析)
从算法的名字中可以看出该算法是群体智能优化算法中的一种,人工鱼群算法通过模拟鱼群的觅食.聚群.追尾.随机等行为在搜索域中进行寻优. 人工鱼群算法有三个比较重要的概念:视野范围.k-距离邻域.多条鱼的中 ...
- 蒙哥马利java算法_算法详解 - 蒙哥马利算法的概念与原理
算法的详解 扯了一大顿,终于引出了今天文章的主角,前面讲到的两个算法,第一个就是蒙哥马利乘模,第二个就是蒙哥马利约减.下面我们来讲这两个算法的详解. 正如前面提到的蒙哥马利算法的三个特性之一是,不是基 ...
- 相似图片搜索、算法、识别的原理解析(上)
原文地址:http://www.36dsj.com/archives/3204 2011年6月,Google把"相似图片搜索"正式放上了首页.你可以用一张图片,搜索互联网上所有与它 ...
- 相似图片搜索、算法、识别的原理解析(下)
原文地址:http://www.36dsj.com/archives/3206 之前,我写了<相似图片搜索的原理>,介绍了一种最简单的实现方法. 昨天,我在isnowfy的网站看到,还有其 ...
- 用c语言实现蒙哥马利算法,蒙哥马利算法的概念与原理 - 全文
蒙哥马利(Montgomery)幂模运算是快速计算a^b%k的一种算法,是RSA加密算法的核心之一. 蒙哥马利模乘的优点在于减少了取模的次数(在大数的条件下)以及简化了除法的复杂度(在2的k次幂的进制 ...
- 计算机中算法的概念,高中数学必修三: 算法的概念 基础知识解析
知识点一:算法的含义 数学中算法:通常指按照一定规则解决某一类问题的明确和有限的步骤. 现代算法:通常可以编成计算机程序,让计算机执行并解决的问题. 知识点二:算法的特征 (1) 有序性:算法是从初始 ...
- 运筹学最优化理论系列概念-单纯形法原理解析
线性规划的单纯形法的几何解释是什么? 很显然,用单纯形法求解线性规划问题,我们首先需要明白线性规划问题的可行域的边界实际上都是直线或者是平面,因此借用这位大神说的一句话"单纯形就是很多超平 ...
最新文章
- 梯度倒谱matlab程序,MFCC梅尔倒谱参数及matlab代码
- TODO;FIXME;XXX
- Java基础——异常处理
- 微信分享接口示例(设置标题、缩略图、连接、描述),附demo下载
- Dart入门—库、泛型与异常
- AD格式生产文件Gerber文件的制作
- 计算机组成原理:P5-存储器(下)
- Spring Cloud与Dubbo优缺点详解
- 全网首发 的Fiddler系列文章(二):Fiddler界面主菜单功能介绍
- flink报错:The types of the interface org.apache.flink.util.OutputTag could not be inferred.
- 联想小新 mini 主机 评测
- 802.1x EAP(证书)、PEAP(证书、EAP-MSCHAP v2)认证配置(NPS、组策略)
- 芯动联科在科创板IPO过会:拟募资10亿元,金晓冬为实际控制人
- python对文件的写作方法_python读写csv文件 - 作文写作问答 - 归教作文网
- Mysql数据库 汉字转拼音全拼
- Linux 中有效用户组和初始用户组
- 计算机系统的组成一般不包括,计算机系统的基本组成,一般应包括哪些
- 关于哈希表(Hashtable)个人学习理解
- Java 应用一般架构
- windows远程桌面连接redhat
热门文章
- 2.5.2 Adapter接口及实现类
- the Balanced Scoredcard —— 从建立到实施
- diy计算机,【转】疯狂DIY——数千继电器自制8位计算机
- python的copy
- Quartz在服务异常中断或者重启后,不执行之前漏掉的任务,重新运行下一次任务...
- 黄东升: Linux中形形色色的接口API和ABI
- 50岁 java老师_神秘的角落之张东升做了Java老师,悲剧就这样开始了
- 翻新轮胎工艺流程是什么样的,如何识别翻新轮胎
- 使用K8S部署zookeeper集群
- 解决qq无声音的问题