欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > Apriori关联规则算法 HNUST【数据分析技术】(2025)

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

2025/2/22 2:24:20 来源:https://blog.csdn.net/weixin_46337464/article/details/144723059  浏览:    关键词: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博客

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词