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

news2025/1/2 3:26:40

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) + 1
    Fk = []  # 支持度大于最小支持度的项集,  即频繁项集
    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_1

    K = 2

    while 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)  # 把新产生的候选集假如F
        sup_data.update(sup_k)  # 字典更新,加入新得出的数据
        K += 1
    return F, sup_data  # 返回所有频繁项集, 以及存放频繁项集支持度的字典


"""
Apriori算法
定义A 1,   B 2,   C 3,   D 4,   E 5

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

min_support = 2 
"""
# 主函数
if __name__ == '__main__':
    # 数据
    dataset = [
        [1, 3, 4],
        [2, 3, 5],
        [1, 2, 3, 5],
        [2, 5]
    ]
    # 最小支持度设置为2
    min_support = 2
    F, 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.coloradmin.cn/o/2267767.html

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

相关文章

如何让Tplink路由器自身的IP网段 与交换机和电脑的IP网段 保持一致?

问题分析: 正常情况下,我的需求是:电脑又能上网,又需要与路由器处于同一局域网下(串流Pico4 VR眼镜),所以,我是这么连接 交换机、路由器、电脑 的: 此时,登录…

系统思考—冰山模型

“卓越不是因机遇而生,而是智慧的选择与用心的承诺。”—— 亚里士多德 卓越,从来不是一次性行为,而是一种习惯。正如我们在日常辅导中常提醒自己:行为的背后,隐藏着选择的逻辑,而选择的根源,源…

TP5 动态渲染多个Layui表格并批量打印所有表格

记录: TP5 动态渲染多个Layui表格每个表格设置有2行表头,并且第一行表头在页面完成后动态渲染显示内容每个表格下面显示统计信息可点击字段排序一次打印页面上的所有表格打印页面上多个table时,让每个table单独一页 后端代码示例: /*** Nod…

【笔记】linux虚拟机与windows的文件共享之Samba服务基本配置

做完之后的总结写在最前面便于复习: 虚拟机上要共享的资源通过samba的操作 允许window通过网络去访问其共享资源 防止以后看不懂放在最前面 (一)虚拟机操作部分 下载 samba smbclient samba-common 在根目录/新建一个samba专用文件夹&…

PyTorch Instance Normalization介绍

Instance Normalization(实例归一化) 是一种标准化技术,与 Batch Normalization 类似,但它对每个样本独立地对每个通道进行归一化,而不依赖于小批量数据的统计信息。这使得它非常适合小批量训练任务以及图像生成任务(如风格迁移)。 Instance Normalization 的原理 对每…

攻防世界web新手第五题supersqli

这是题目,题目看起来像是sql注入的题,先试一下最常规的,输入1,回显正常 输入1‘,显示错误 尝试加上注释符号#或者–或者%23(注释掉后面语句,使1后面的单引号与前面的单引号成功匹配就不会报错…

机器视觉中的单线程、多线程与跨线程:原理与应用解析

在机器视觉应用中,程序的运行效率直接影响到系统的实时性和稳定性。随着任务复杂度的提高,单线程处理往往无法满足高性能需求,多线程技术因此被广泛应用。此外,跨线程操作(如在多线程中更新界面或共享资源)…

JAVA学习笔记第二阶段开始 Day11 五种机制---机制1:泛型机制

JAVA基础进阶版链接 https://pdai.tech/md/java/basic/java-basic-x-generic.html 五种机制 泛型机制 用处,提高类型安全性和代码重用 泛型在编写代码中使用【类型占位符】,而不是具体的类型,泛型是通过“类型擦除”来实现的类型安全性&…

ZLG嵌入式笔记 | 电源设计避坑(上)

产品上量后,通常都会有降成需求。多年来,接触过不少产品降成案例,在电源上下刀过猛,引发了产品偶发性问题,带来了很不好的负面影响。本文将对这些案例进行总结,提供电源设计参考,确保产品降成不…

全面了解 SQL Server:功能、优势与最佳实践

SQL Server 是微软公司推出的一款关系型数据库管理系统(RDBMS),广泛应用于企业级数据存储、数据分析、应用开发等领域。作为全球最受欢迎的数据库管理系统之一,SQL Server 提供了强大的功能和工具,支持从小型应用到大型…

WPF TextBox 输入限制 详解

总目录 前言 通常对于WPF输入框 输入的控制无非以下方式 1 直接禁止输入(包括粘贴) 不符合要求的字符 如只可输入数字的输入框,当你输入字母的时候是无法输入的 2 输入后,校验内容是否符合要求,然后提示错误,禁止提交信息 如只可…

从0入门自主空中机器人-4-【PX4与Gazebo入门】

前言: 从上一篇的文章 从0入门自主空中机器人-3-【环境与常用软件安装】 | MGodmonkeyの世界 中我们的机载电脑已经安装了系统和常用的软件,这一篇文章中我们入门一下无人机常用的开源飞控PX4,以及ROS中无人机的仿真 1. PX4的安装 1.1 PX4固件代码的下载…

Android笔记(四十一):TabLayout内的tab不滚动问题

背景 假设二级页面是上面图片的布局,当进来时TabLayout和ViewPager2绑定完就马上调setCustomItem,跳转到最后一个tab页面时,会发现tab不滚动,手动滑一下ViewPager2时才会滚动tab到正确的位置 原因分析 调用TabLayoutMediator.at…

Pandas04

Pandas01 Pandas02 Pandas03 文章目录 内容回顾1 数据的合并和变形1.1 df.append (了解)1.2 pd.concat1.3 merge 连接 类似于SQL的join1.4 join (了解) 2 变形2.1 转置2.2 透视表 3 MatPlotLib数据可视化3.1 MatPlotLib API 套路 &为什么要可视化3.2 单变量可视化3.3 双变量…

idea 禁用/关闭 sonarlint 后台自动分析(默认开启可能会引起idea卡顿)

idea 的 SonarLint 插件安装后,idea的使用经常出现卡顿,并且运行内存使用非常高,出现的原因之一就可能是 SonarLint 正在进行自动扫描,所以一般情况我们可以选择关闭 SonarLint 自动扫描功能,在需要对代码进行规范检查…

“鼎和财险一体化数据安全管控实践”入选信通院金融领域优秀案例

近日,由中国信通院举办的深度观察报告会系列论坛在京召开。在数字生态治理分论坛上,2024年度首期“磐安”优秀案例——六大行业应用优秀案例遴选结果发布,由北京原点数安科技有限公司与鼎和财产保险股份有限公司联合申报的“鼎和财险一体化数…

音视频入门基础:MPEG2-TS专题(24)——FFmpeg源码中,显示TS流每个packet的pts、dts的实现

音视频入门基础:MPEG2-TS专题系列文章: 音视频入门基础:MPEG2-TS专题(1)——MPEG2-TS官方文档下载 音视频入门基础:MPEG2-TS专题(2)——使用FFmpeg命令生成ts文件 音视频入门基础…

小白考研历程:跌跌撞撞,起起伏伏,五个月备战历程!!!

说真的,7月前我都没有想过我自己要考研,属于前期都是在大学中准备比赛,证书,直到参加蓝桥杯获得国赛三等奖,我问自己,再继续参加比赛吗?已经没有并肩同行的同学(他们都准备考公考研啦…

企业架构学习笔记-数字化转型

1. 企业数字化发展阶段 案例1.业务部门“点菜”,IT部门叫苦 随着企业信息化进程的不断推进,IT部门的角色和面临的挑战也在发生显著变化。在信息化建设的初级阶段,确实存在IT部门需要积极引导和说服业务部门重视信息技术价值的情况。当时&am…

【js】记录预览pdf文件

接口调用拿到pdf的文件流,用blob处理这个文件流拿到url,使用window.open跳转新的窗口进行预览 api({dataType: blob, }).then(res >{if(res.code 0){this.previewPDF(res,application/pdf;charsetutf-8,pdf文件名)} })previewPDF (res, type, fname…