Apriori关联规则算法 HNUST【数据分析技术】(2025)

1.理论知识

Apriori是一种常用的数据关联规则挖掘方法,它可以用来找出数据集中频繁出现的数据集合。该算法第一次实现在大数据集上的可行的关联规则提取,其核心思想是通过连接产生候选项及其支持度,然后通过剪枝生成频繁项集。

Apriori算法的主要思想是找出存在于事务数据集中最大的频繁项集,再利用得到的最大频繁项集与预先设定的最小置信度阈值生成强关联规则。

图1.1关键名词解释


2.算法流程图

3.实现代码

def item(dataset):  # 求第一次扫描数据库后的 候选集c1 = []  # 存放候选集元素for x in dataset:  # 求这个数据库中出现了几个元素,然后返回for y in x:if [y] not in c1:c1.append([y])c1.sort()return c1# 计算支持度
def get_frequent_item(dataset, c, min_support):cut_branch = {}  # 用来存放所有项集的支持度的字典for x in c:for y in dataset:if set(x).issubset(set(y)):cut_branch[tuple(x)] = cut_branch.get(tuple(x),0) + 1Fk = []  # 支持度大于最小支持度的项集,  即频繁项集sup_dataK = {}  # 用来存放所有 频繁 项集的支持度的字典for i in cut_branch:if cut_branch[i] >= min_support:Fk.append(list(i))sup_dataK[i] = cut_branch[i]return Fk, sup_dataK# 计算候选集
def get_candidate(Fk, K):  # 求第k次候选集ck = []  # 存放产生候选集for i in range(len(Fk)):for j in range(i + 1, len(Fk)):L1 = list(Fk[i])[:K - 2].sort()L2 = list(Fk[j])[:K - 2].sort()if L1 == L2:if K > 2:new = list(set(Fk[i]) ^ set(Fk[j]))else:new = set()for x in Fk:if set(new).issubset(set(x)) and list(set(Fk[i]) | set(Fk[j])) not in ck:ck.append(list(set(Fk[i]) | set(Fk[j])))return ck# Apriori算法
def Apriori(dataset, min_support=2):c1 = item(dataset)f1, sup_1 = get_frequent_item(dataset, c1, min_support)F = [f1]sup_data = sup_1K = 2while len(F[K - 2]) > 1:ck = get_candidate(F[K - 2], K)  # 求第k次候选集fk, sup_k = get_frequent_item(dataset, ck, min_support)F.append(fk)  # 把新产生的候选集假如Fsup_data.update(sup_k)  # 字典更新,加入新得出的数据K += 1return F, sup_data  # 返回所有频繁项集, 以及存放频繁项集支持度的字典"""
Apriori算法
定义A 1,   B 2,   C 3,   D 4,   E 51 [A C D]       1 3 4
2 [B C E]       2 3 5
3 [A B C E]     1 2 3 5
4 [B E]         2 5min_support = 2 
"""
# 主函数
if __name__ == '__main__':# 数据dataset = [[1, 3, 4],[2, 3, 5],[1, 2, 3, 5],[2, 5]]# 最小支持度设置为2min_support = 2F, sup_data = Apriori(dataset, min_support)print("最小支持度为:\n ", min_support)print('------------------------------------------------------')print("已知关系:\n ", dataset)print('------------------------------------------------------')print("所有的频繁项为:\n {}".format(F))print('------------------------------------------------------')print("对应的支持度为:\n {}".format(sup_data))

4.实验结果


测试数据

表1 Apriori算法输入的数据 (最小支持度设置为2)

序号

数据项

替换

1

[A C D]

1 3 4

2

[B C E]

2 3 5

3

[A B C E]

1 2 3 5

4

[B E]

2 5


实验结果与分析

图 1.2 Apriori关联规则算法实验结果


算法优缺点

优点:

  1. Aprioi算法采用逐层搜索的迭代方法,算法简单易于实现。
  2. 数据采用水平组织方式
  3. 采用Apriori 优化方法
  4. 适合事务数据库的关联规则挖掘。
  5. 适合稀疏数据集:根据以往的研究,该算法只能适合稀疏数据集的关联规则挖掘,也就是频繁项目集的长度稍小的数据集。

缺点:

  1. 对数据库的扫描次数过多。
  2. Apion算法可能产生大量的候选项集。
  3. 在频繁项目集长度变大的情况下,运算时间显著增加。
  4. 采用唯一支持度,没有考虑各个属性重要程度的不同。
  5. 算法的适应面窄。

 其他实验(我是芒果酱点一个关注吧(σ′▽‵)′▽‵)σ)

  • k-Means聚类算法 HNUST【数据分析技术】(2024)-CSDN博客
  • PageRank Web页面分级算法 HNUST【数据分析技术】(2024)-CSDN博客
  • KNN分类算法 HNUST【数据分析技术】(2024)-CSDN博客
  • Apriori关联规则算法 HNUST【数据分析技术】(2024)-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/65415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

info There appears to be trouble with your network connection. Retrying

这个错误信息表明你在使用包管理器安装项目依赖时遇到了网络连接问题。 可能的解决方法: 检查当前node.js版本是否过低。 建议使用当前长期支持版本 yarn的淘宝镜像:yarn的淘宝镜像-CSDN博客 nvm常用命令:NVM常用命令-CSDN博客 下载 | Node.js 中文…

GitLab 停止中国区用户访问,为用户提供60天的迁移期

近日,全球知名的代码托管平台 GitLab 宣布了一个重大变化:将停止为中国大陆、香港及澳门地区的用户提供访问服务,建议用户访问授权国内的产品极狐 GitLab.cn。 极狐 GitLab.cn 是 GitLab 授权的独立中国公司,之前该公司还发生过举…

C#冒泡排序

一、冒泡排序基本原理 冒泡排序是一种简单的排序算法。它重复地走访要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 以一个简单的整数数…

大数据-261 实时数仓 - 业务数据库表结构 交易订单、订单产品、产品分类、商家店铺、地域组织表

点一下关注吧!!!非常感谢!!持续更新!!! Java篇开始了! MyBatis 更新完毕目前开始更新 Spring,一起深入浅出! 目前已经更新到了: H…

一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的分类

机器学习实战通常是将理论与实践结合,通过实际的项目或案例,帮助你理解并应用各种机器学习算法。下面是一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的…

珞珈一号夜光遥感数据地理配准,栅格数据地理配准

目录 一、夜光数据下载: 二、夜光遥感数据地理配准 三、计算夜光数据值 四、辐射定标 五、以表格显示分区统计 五、结果验证 夜光数据位置和路网位置不匹配,虽然都是WGS84坐标系,不匹配!!!不要看到就直接…

Maven + MyBatis

文章目录 Maven 配置mybatis-config.xml 核心配置文件模板mybatis 映射 mapper可以 package不可以解决 Maven目录结构 Maven 配置 核心配置文件 <?xml version"1.0" encoding"UTF-8" ?> <!-- .dtd约束 --> <!DOCTYPE configurationPUBLIC…

【最新】西陆房产系统源码+uniapp全开源+环境教程

一.介绍 西陆房产管理系统&#xff0c;支持小程序、H5、APP&#xff1b;包含房客、房东(高级授权)、经纪人(高级授权)三种身份。核心功能有&#xff1a;新盘销售、房屋租赁、地图找房、房源代理(高级授权)、在线签约(高级授权)、电子合同(高级授权)、客户CRM跟进(高级授权)、经…

Elasticsearch检索之三:官方推荐方案search_after检索实现(golang)

Elasticsearch8.17.0在mac上的安装 Kibana8.17.0在mac上的安装 Elasticsearch检索方案之一&#xff1a;使用fromsize实现分页 快速掌握Elasticsearch检索之二&#xff1a;滚动查询(scrool)获取全量数据(golang) 1、search_after检索 在前面的文章介绍了fromsize的普通分页…

小程序基础 —— 10 如何调试小程序代码

如何调试小程序代码 在进行项目开发的时候&#xff0c;不可避免需要进行调试&#xff0c;那么如何调试小程序呢&#xff1f; 打开微信开发者工具后&#xff0c;有一个模拟器&#xff0c;通过模拟器能够实时预览自己写的页面&#xff0c;如下&#xff1a; 在上部工具栏中有一个…

VLM和VLAM(VLA)相关介绍和发展历程

目录 一、个人感想二、相关介绍2.1 视觉语言模型 (VLM) 的发展历程2.2 视觉语言动作模型 (VLA) 的发展历程2.3 一些关键的研究工作&#xff1a;一些架构图 三、发展历程3.1 视觉语言模型 (VLM) 的发展时间线3.2 视觉语言动作模型 (VLA) 的发展时间线 四、参考资料 一、个人感想…

算法题(18):删除有序数组中的重复项2

审题&#xff1a; 需要原地删除数据让数组中一个数据只能出现最多2次&#xff0c;并返回修改后的数组的数据个数 &#xff08;不会有空数组情况&#xff09; 思路&#xff1a; 双指针&#xff1a;我们用left指向下一个需要插入数据的位置&#xff0c;right去遍历数组 left数据的…

IPv6 基础协议-NDP

IPv6 基础协议报文 何为基础协议&#xff1f;像v4中的icmp、arp、hdcp之类的 在v6中只需要NDP协议&#xff0c;他是通过ICMPv6报文完成的&#xff0c;她能够实现邻居发现、无状态地址检测、重复地址检测、PMTU等功能 RS&#xff08;133&#xff09;RA&#xff08;134&#x…

MySQL外键类型与应用场景总结:优缺点一目了然

前言&#xff1a; MySQL的外键简介&#xff1a;在 MySQL 中&#xff0c;外键 (Foreign Key) 用于建立和强制表之间的关联&#xff0c;确保数据的一致性和完整性。外键的作用主要是限制和维护引用完整性 (Referential Integrity)。 主要体现在引用操作发生变化时的处理方式&…

分布式事务入门 一

分布式事务入门 一 您好&#xff0c;我是今夜写代码,今天学习下分布式事务相关理论&#xff0c;以及常见的解决方案&#xff0c;为后续掌握Seata分布式事务框奠定基础。 为什么需要分布式事务? 分布式事务主要由于存储资源的分布性&#xff0c;通常涉及多个数据库。 分布式…

Goland:专为Go语言设计的高效IDE

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;Goland是JetBrains公司开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为Go语言设计&#xff0c;提供了高效的代码编辑、强大的调试工具和丰富的项目管理功能。其智能代码补全、强大的调试与测试支…

uniapp 前端解决精度丢失的问题 (后端返回分布式id)

原因&#xff1a; 后端使用分布式id, id为19位数&#xff0c;导致精度丢失 &#xff0c;前端解决方法 这个是通过浏览器请求回来的数据&#xff0c;这个时候id 数据已经丢失了&#xff0c;在数据库查询不到&#xff0c;在调获详情接口的时候会有问题 实际的&#xff1a; 解决…

读书笔记-《乡下人的悲歌》

前段时间看了一些 J.D. Vance 的采访视频&#xff0c;几乎都是记者带着刁难的问题先手进攻&#xff0c;而 Vance 面带微笑&#xff0c;提及对方的名字&#xff0c;条理清晰地从对方的攻击中切回主题形成后手反制&#xff0c;实在让人看得过瘾。 更不可思议的是&#xff0c;Van…

Datawhale-AI冬令营二期

目录 一、番茄时钟&#xff08;1&#xff09;输入Prompt&#xff08;2&#xff09;创建 HTML 文件解析1&#xff1a;HTML结构解析2&#xff1a;计时器内容解析3&#xff1a;按钮区域解析4&#xff1a;脚本引用 &#xff08;3&#xff09;使用JavaScript实现时钟功能解析1&#…

【Sentinel】流控效果与热点参数限流

目录 1.流控效果 1.1.warm up 2.2.排队等待 1.3.总结 2.热点参数限流 2.1.全局参数限流 2.2.热点参数限流 2.3.案例 1.流控效果 在流控的高级选项中&#xff0c;还有一个流控效果选项&#xff1a; 流控效果是指请求达到流控阈值时应该采取的措施&#xff0c;包括三种&…