1. 关联规则挖掘

关联规则挖掘定义
大多数关联规则挖掘算法通常采用的一种策略是,将关联规则挖掘任务分解为如下两个主要的子任务:

  • 频繁项集产生(Frequent Itemset Generation)
    其目标是发现满足最小支持度阈值的所有项集,这些项集称作频繁项集。
  • 规则的产生(Rule Generation)
    其目标是从上一步发现的频繁项集中提取所有高置信度的规则,这些规则称作强规则。
  • 关联分析的目标
    1. 发现频繁项集;
    2. 由频繁项集产生强关联规则,这些规则必须大于或等于最小支持度和最小置信度。

2 Apriori算法介绍

  • Apriori算法的原理

    1. 通过限制候选产生发现频发项集
    2. 由频繁项集产生关联规则
  • Apriori算法的重要性质
    1. 性质1:频繁项集的子集必为频繁项集
      如果{B,C}是频繁的,那么{B},{C}也一定是频繁的
    2. 性质2:非频繁项集的超集一定是非频繁的。
      如果{A, B}是非频繁的,那么{A, B, C},{A, B, C, D}也一定是频繁的
  • 使用Apriori算法发现频繁项集
    1. 扫描数据集,得到所有出现过的数据,作为候选1项集
    2. 挖掘频繁k项集
      扫描计算候选k项集的支持度
      剪枝去掉候选k项集中支持度低于最小支持度α的数据集,得到频繁k项集。如果频繁k项集为空,则返回频繁k-1项集的集合作为算法结果,算法结束。
      基于频繁k项集,连接生成候选k+1项集
    3. 利用步骤2,迭代得到k=k+1项集结果
  • **由频繁项集产生关联规则 **
    产生关规则的过程如下:

    1. 对于每个频繁项集I,产生I的所有非空子集
    2. 对于I的每个非空子集s,如果support(l)/support(s) ≥min_conf,则输出规则“s⇒(l-s)”。其中,min_conf是最小置信度阈值。
  • Apriori算法的简单实例
    1. Apriori算法举例——发现频发项集
    2. Apriori算法举例——产生关联规则
      对于频繁项集{B, C, E}, 它的非空子集有{B}, {C}, {E}, {B, C}, {B,E}, {C,E}.以下是据此获得的关联规则及其置信度

2.1 代码实现

# *-* coding:utf-8 *-*import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rulesdata_test = [['A', 'C', 'D'], ['B', 'C', 'E'], ['A', 'B', 'C', 'E'], ['B', 'E']]def create_data():dataset = [['Milk', 'Onion', 'Nutmeg', 'Kidney Beans', 'Eggs', 'Yogurt'],['Dill', 'Onion', 'Nutmeg', 'Kidney Beans', 'Eggs', 'Yogurt'],['Milk', 'Apple', 'Kidney Beans', 'Eggs'],['Milk', 'Unicorn', 'Corn', 'Kidney Beans', 'Yogurt'],['Corn', 'Onion', 'Onion', 'Kidney Beans', 'Ice cream', 'Eggs']]return datasetdef main():dataset = create_data()te = TransactionEncoder()te_ary = te.fit(dataset).transform(dataset)df = pd.DataFrame(te_ary, columns=te.columns_)frequent_itemsets = apriori(df, min_support=0.7, use_colnames=True)print(frequent_itemsets)  # 频繁项集rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.7)  # 关联规则print(rules)if __name__ == '__main__':main()

n_threshold=0.7) # 关联规则
print(rules)

if __name__ == '__main__':main()

十八、Apriori算法介绍相关推荐

  1. Apriori算法介绍(Python实现)

    导读: 随着大数据概念的火热,啤酒与尿布的故事广为人知.我们如何发现买啤酒的人往往也会买尿布这一规律?数据挖掘中的用于挖掘频繁项集和关联规则的Apriori算法可以告诉我们.本文首先对Apriori算 ...

  2. apriori java_频繁模式挖掘apriori算法介绍及Java实现

    频繁模式是频繁地出如今数据集中的模式(如项集.子序列或者子结构).比如.频繁地同一时候出如今交易数据集中的商品(如牛奶和面包)的集合是频繁项集. 一些基本概念 支持度:support(A=>B) ...

  3. salesforce 零基础学习(十八)WorkFlow介绍及用法

    说起workflow大家肯定都不陌生,这里简单介绍一下salesforce中什么情况下使用workflow. 当你分配许多任务,定期发送电子邮件,记录修改时,可以通过自动配置workflow来完成以上 ...

  4. 大数据——十大基本算法介绍

    转载地址:https://blog.csdn.net/qq_21397815/article/details/90289978 一.算法概述: 1.算法分类: 十种常见算法可以分为两大类: 比较类排序 ...

  5. Apriori算法及例题

    一:Apriori算法介绍 关联规则挖掘是数据挖掘中最活跃的研究方法之一 .最早是由 Agrawal 等人提出的1993最初提出的动机是针对购物篮分析问题提出的,其目的是为了发现交易数据库中不同商品之 ...

  6. 耶鲁大学公开课博弈论(十八-十九)—— 信息集与最优子博弈

    耶鲁大学公开课博弈论(十八-十九)-- 信息集与最优子博弈 理论与概念 在十八讲中介绍了全局纳什均衡点的相关内容,主要就是通过引入信息集的概念将传统的同时博弈也转变为序贯博弈问题,从而使用逆向推理解决 ...

  7. 关联规则算法——Apriori算法解析及Python实现

    文章目录 关联规则挖掘过程 Apriori算法 1. Apriori算法的基本思想 2. Apriori算法产生频繁项集的过程 3. Apriori算法的主要步骤 4. 举例及代码实现 关联规则挖掘过 ...

  8. 关联规则挖掘——Apriori算法的基本原理以及改进

    问题引入 关联规则挖掘发现大量数据中项集之间有趣的关联或者相互联系.关联规则挖掘的一个典型例子就是购物篮分析,该过程通过发现顾客放入其购物篮中不同商品之间的联系,分析出顾客的购买习惯,通过了解哪些商品 ...

  9. OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope

    OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...

最新文章

  1. Online Judge上陪审团选人问题用Java实现的一个AC解
  2. 5 步助你成为一名优秀的 Docker 代码贡献者
  3. Hibernate 多对多映射实列
  4. 腾讯陈炜:5G边缘计算助力高性能、大流量和行业物联类应用快速发展
  5. java中的static关键字总结
  6. Maven无法下载远程依赖-强制下载也不行
  7. 在linux系统下java实现pdf导出汉字无法显示_Linux环境下iText生成pdf中文不显示问题...
  8. 能够生成动态图片的R模块:rCharts
  9. 彻底剖析C# 2.0泛型类的创建和使用
  10. 风尚云网学习-input属性总结
  11. 基于web的网上书城网站设计与实现(SpringBoot ,Vue,MySQL )
  12. 02 敏捷开发测试流程
  13. iWatch开发的真机调试适配攻略
  14. 手动晶圆切割贴膜机-8寸12寸晶圆减薄划片机
  15. 理解path.join() 和 path.resolve()
  16. 互联网创业技术团队需要多少人
  17. 关闭bitLocker驱动器加密
  18. 抖音新手常犯的几个雷区,你知道几个?
  19. LeetCode--574. 当选者
  20. iOS动画——弹窗动画(pop动画)

热门文章

  1. oninput,onpropertychange,onchange的用法和区别
  2. stream的常见方法操作(亲测)
  3. 【IDEA】2020 断点(BreakPoints)调试(亲测)
  4. nginx优化worker进程最大打开文件数worker_rlimit_nofile 65535
  5. MySQL的distinct:去重
  6. html点击后按钮本身文字变化,javascript实现点击后变换按钮显示文字的方法
  7. php获取日期中的月份,年份
  8. 计算机科学与技术创新实验班是什么意思,计算机科学与技术系成立2010级创新实验班(图)...
  9. 使用MySQL的23个注意事项
  10. idea设置默认maven路径(2020版idea)