visual fortran常用数值算法集_Apriori算法介绍及其参数讲解

算法介绍

Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集。

Apriori算法的基本思想是:首先找出所有的频集,这些项集出现的频繁性至少和预定义的最小支持度一样。然后由频集产生强关联规则,这些规则必须满足最小支持度和最小可信度。然后使用第1步找到的频集产生期望的规则,产生只包含集合的项的所有规则,其中每一条规则的右部只有一项,这里采用的是中规则的定义。一旦这些规则被生成,那么只有那些大于用户给定的最小可信度的规则才被留下来。为了生成所有频集,使用了递归的方法。

简单点说,就是先找频繁项集,再根据关联规则找关联物品。

Apriori算法的原理是:如果某个项集是频繁项集,那么它所有的子集也是频繁的。即如果{0,1}是频繁的,那么{0},{1}也一定是频繁的。

Apriori算法示意图如下:

4b361e61be14e4fbefa07233bb39b91b.png

算法优势

优点

  1. 适合稀疏数据集。

  2. 算法原理简单,易实现。

  3. 适合事务数据库的关联规则挖掘。

缺点

  1. 可能产生庞大的候选集。

  2. 算法需多次遍历数据集,算法效率低,耗时。

参数介绍

min_support:默认0.5,最小支持度,0到1的数值代表百分比,比如0.5代表最小支持度为50%;

min_confidence:默认1,最小置信度,数值也代表百分比,比如1代表100%。

调优方法

能看到Apriori在计算过程中有以下几个缺点

  1. 可能产生大量的候选集。因为采用排列组合的方式,把可能的项集都组合出来了;

  2. 每次计算都需要重新扫描数据集,来计算每个项集的支持度。

所以Apriori算法会浪费很多计算空间和计算时间,为此人们提出了FP-Growth算法,它的特点是:

创建了一棵FP树来存储频繁项集。在创建前对不满足最小支持度的项进行删除,减少了存储空间。整个生成过程只遍历数据集2次,大大减少了计算量。

所以在实际工作中,我们常用FP-Growth来做频繁项集的挖掘。

适用场景

故障拓扑关联中,当计算好故障阈值后便可识别哪些是故障指标哪些是正常指标,然后通过Apriori算法计算故障指标之间的拓扑关系。

应用领域:消费市场价格分析,入侵检测,移动通信领域。

Apriori算法被广泛应用于移动通信领域。移动增值业务逐渐成为移动通信市场上最有活力、最具潜力、最受瞩目的业务。随着产业的复苏,越来越多的增值业务表现出强劲的发展势头,呈现出应用多元化、营销品牌化、管理集中化、合作纵深化的特点。针对这种趋势,在关联规则数据挖掘中广泛应用的Apriori算法被很多公司应用。依托某电信运营商正在建设的增值业务Web数据仓库平台,对来自移动增值业务方面的调查数据进行了相关的挖掘处理,从而获得了关于用户行为特征和需求的间接反映市场动态的有用信息,这些信息在指导运营商的业务运营和辅助业务提供商的决策制定等方面具有十分重要的参考价值。

demo示例

from efficient_apriori import aprioritransactions = [('eggs', 'bacon', 'soup'),                ('eggs', 'bacon', 'apple'),                ('soup', 'bacon', 'banana')]itemsets, rules = apriori(transactions, min_support=0.5, min_confidence=1)print(rules)  # [{eggs} -> {bacon}, {soup} -> {bacon}]# Filtering and sorting association rulesfrom efficient_apriori import aprioritransactions = [('eggs', 'bacon', 'soup'),                ('eggs', 'bacon', 'apple'),                ('soup', 'bacon', 'banana')]itemsets, rules = apriori(transactions, min_support=0.2, min_confidence=1)# Print out every rule with 2 items on the left hand side,# 1 item on the right hand side, sorted by liftrules_rhs = filter(lambda rule: len(rule.lhs) == 2 and len(rule.rhs) == 1, rules)for rule in sorted(rules_rhs, key=lambda rule: rule.lift):  print(rule)  # Prints the rule and its confidence, support, lift, ...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Fortran是一种古老而经典的编程语言,常用于科学计算和数值分析。在Fortran中,有许多常用算法程序,下面我将介绍一些常见的。 1. 线性代数子程序库:Fortran常用于解线性方程组和矩阵运算。一些常见的线性代数子程序库包括BLAS(Basic Linear Algebra Subprograms)、LAPACK(Linear Algebra Package)和MATPACK(Matrix Package)。这些库提供了一系列函数,用于求解线性方程组、矩阵乘法、特征值计算等。 2. 数值积分:Fortran提供了一些库用于数值积分,比如QUADPACK和CUBPACK。这些库包含了各种数值积分算法,如高斯积分、辛普森积分等,用于数值计算和数学建模。 3. 随机数生成:在科学计算中,随机数的生成是很重要的一部分。Fortran提供了一些库,如RANDLIB和RANLIB,用于生成各种类型的随机数,如均匀分布、正态分布等。 4. 插值和拟合:Fortran提供了一些库用于数据插值和曲线拟合,如FFTPACK(Fast Fourier Transform Package)和SLATEC(Sandia Lapack Equations and Transforms Component)。这些库提供了各种插值和拟合方法,如拉格朗日插值、样条插值,以及多项式拟合、最小二乘拟合等。 5. 最优化:Fortran在最优化问题中也有一些常用算法程序,如MINPACK(Nonlinear Least Squares Problem)和NAG(Numerical Algorithms Group)最优化库。这些库提供了各种优化算法,如非线性最小二乘、约束优化等。 总之,Fortran作为一种古老而强大的编程语言,在科学计算和数值分析领域有着广泛的应用。各种算法程序Fortran提供了丰富的功能和工具,使得开发者可以更轻松地进行各种复杂的数学计算和科学模拟。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值