机器学习实战之Apriori

2023-11-04

1. 关联分析

1.1 定义

       关联分析是一种在大规模数据上寻找物品间隐含关系的一种任务.这种关系有2种形式:频繁项集和关联规则.

        (1) 频繁项集(frequent item sets): 经常出现在一起的物品的集合;

        (2) 关联规则(association rules): 暗示两种物品之间可能存在很强的关系.

1.2 量化关联分析是否成功的算法

       支持度和可信度是用来量化关联分析是否成功的方法.

       (1)支持度(support) : 一个项集的支持度被定义为数据集中包含该项集的记录所占的比例. 支持度针对项集而言,可以设置最小支持度,只保留满足最小支持度的项集.以下图中的清 单为例, {豆奶}的支持度为4/5;{豆奶,尿布}的支持度为3/5.

       (2) 可信度或置信度(confidence) : 针对关联规则定义的. 例如: 规则{尿布}->{葡萄酒}的可信度被定义为 "支持度{尿布,葡萄酒}/支持度{尿布}"  . 支持度{尿布,葡萄酒}为3/5 , 支持度{尿布} 为4/5, 即这条规则可信度为3/4. 这意味着对于包含"尿布"的所有记录,我们的规则对其中75%的记录都适用.

2. Apriori

2.1 问题: 假设一家商店里只有4种商品:0,1,2,3. 下图显示了所有可能被购买的商品组合:

对于单个项集的支持度, 通过遍历每条记录并检查该记录是否包含该项集来计算.但是对于包含N种物品的数据集共有中项集组合,重复计算上述过程是不现实的.

2.2 Apriori原理

    Apriori原理能够减少计算量.

    其内容是: 若某个项集是频繁的, 那么它的子集也是频繁的; 则其逆否命题也是正确的,即 若一个项集是非频繁的, 则它的所有超集也是非频繁的.

    举例说明: 已知阴影项集{2,3}是非频繁的。利用这个知识,我们就知道项集{0,2,3},{1,2,3}以及{0,1,2,3}也是非频繁的。也就是说,一旦计算出了{2,3}的支持度,知道它是非频繁的后,就可以紧接着排除{0,2,3}、{1,2,3}和{0,1,2,3}。使用该原理可以避免项集数目的指数增长,从而在合理时间内计算出频繁项集.

2.3 实现Apriori算法来发现频繁项集

(1) Apriori算法是发现频繁项集的一种方法. 其两个输入参数分别是数据集和最小支持度.

(2) Apriori算法流程:

  • 首先生成所有单个物品的项集列表; 然后扫描交易记录查看哪些项集满足最小支持度要求,去掉不满足最小支持度的项集.
  • 对剩下来的集合进行组合以生成包含两个元素的项集; 然后扫描交易记录查看哪些项集满足最小支持度要求,去掉不满足最小支持度的项集.
  • 上述过程重复直到所有项集都被去掉

(3) Apriori算法生成频繁项集的伪代码

对数据集中的每条交易记录tran:

          对每个候选项集can:

                       检查交易记录tran是否包含候选项集can:

                       若包含,则增加can的计数;

对每个候选项集:

         若该候选项集的支持度不低于最小支持度, 则保留; 反之, 则去掉.

返回所有频繁项集列表

其具体实现代码如下:

<span style="font-size:14px;"><span style="font-size:18px;">#c1是所有单个物品的集合
def createC1(dataSet):
	c1 = []
	for transaction in dataSet:
		for item in transaction:
			if not [item] in c1:
				c1.append([item])
	c1.sort()
	return map(frozenset,c1)  #frozenset是不能改变的集合,用户不能修改

#由ck得到lk的过程,即从ck选出支持度不小于指定值的项构成lk
def scanD(data,ck,minSupport):
	#统计每个候选项集及其对应的出现次数	
	ssCnt = {}
	for transaction in data:
		for can in ck:
			if can.issubset(transaction):
				if not ssCnt.has_key(can):
					ssCnt[can] = 1
				else:
					ssCnt[can] += 1

	#去掉不满足最小支持度的候选项集
	numItems = float(len(data))
	retList = [] #存储满足支持度不低于最小值的项集
	supportData = {} #存储所有项集及其支持度
	for key in ssCnt:
		support = ssCnt[key]/numItems
		if support >= minSupport:
			retList.insert(0,key)
		supportData[key] = support
	return retList,supportData #返回的retlist是ck中满足最小支持度项集的集合</span></span>
(4) Apriori完整的实现

整个Apriori算法的伪代码如下:

当集合中项的个数大于0时:

     

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习实战之Apriori 的相关文章

  • 启动hadoop时异常:connect to host hadoop002 port 22 Connection refused

    问题描述 今天在搭建hadoop伪分布式集群时 启动hadoop 报如下异常情况 hadoop002 也就我设置的Secondary namenode 拒绝连接 启动Secondary namenode失败 root hadoop1 sta
  • JDK8新特性之Stream流

    目录 一 简介 二 Stream流的应用 2 1 为什么使用stream流 2 2 Stream流的原理 2 3 步骤 2 4 获取Stream流对象的方式 2 5 Stream流的API方法 2 5 1 map 2 5 2 collect
  • SQL注入基础

    引言 靓仔们是否经常听到sql注入呢 那么sql注入到底是什么 引用微软官方的语言来说 SQL 注入是一种攻击方式 在这种攻击方式中 在字符串中插入恶意代码 然后将该字符串传递到 SQL Server 的实例以进行分析和执行 构成 SQL
  • 【数据结构c++】双指针(九)

    1 双指针 两数之和 II 输入有序数组 https leetcode cn com problems two sum ii input array is sorted class Solution public vector
  • poj 1330 Nearest Common Ancestors

    Problem poj org problem id 1330 vjudge net contest 80844 problem C Meaning 求最近公共祖先 Note 真 LCA 模版题 那就备份一发 LCA 模版 链式前向星存图
  • php+layui实战,做一个轻社区

    本来业务需要搭建一个轻社区 本着这个方向做了些低成本实现的调研 最终选择了layui作为前端模板 这样一个后端研发同学就可以轻松搞定了 顺便实现了个练手站 先看版块 目前设计的版块 包含文章 问答 圈子 用户级级别 身份 密码找回 邮箱激活
  • 如何将字符串str转为float数组

    麻烦点个赞 今天在学习过程中遇到了将字符串转为数组的问题 以下是解决方案 如果数据格式正确 数据已经被放到数组里了 的话直接一行代码就能解决直接改变类型就可以 你的代数据如果直接长这个样子那就直接运行下面那一行代码 import numpy
  • 第11天-审批中心

    2 工作流介绍 2 1 概念介绍 工作流 Workflow 就是通过计算机对业务流程自动化执行管理 它主要解决的是 使在多个参与者之间按照某种预定义的规则自动进行传递文档 信息或任务的过程 从而实现某个预期的业务目标 或者促使此目标的实现

随机推荐

  • 计算机c盘满了怎么移到d盘去,Win10电脑c盘满了怎么转移到d盘?

    许多用户在使用电脑的时候因为不良的使用习惯 经常将一些文件或者程序安装在电脑的C盘中 最终导致C盘爆满电脑卡顿 那么我们要怎么把C盘的文件转移D盘呢 下面小编就带着大家一起看看吧 操作方法 1 双击 这台电脑 打开 在这台电脑中我们就可以看
  • 蓝桥杯 巧克力

    首先这是一道贪心思想的题目 贪心思想我觉得是考 思维 模拟 的题目 正文 依据题目要求总价最少 那么我们就从价格低的巧克力开始选择 每一天放置一块巧克力 假如当前巧克力k1单价最便宜 保质期为k1 date 那么尽量把当前巧克力放置在第k1
  • 模型的显存和参数量计算

    写在前面 以此记录关于模型显存和参数量的一些理解和计算 首先是 运算量 和 参数量 两个概念 参数量 这个比较好理解 例如卷积层中的卷积核c i k k n o 其参数量就是相乘的结果 而且 无论输入图像的尺寸怎么变 YOLO实现中的mul
  • input输入框添加内部图标

    有可能在制作网页的过程中遇到各种美化表单设计 这次我们来试着做一个demo 将input输入框添加内部图标 话不多说 看一下最终效果 我们的思路是 在一个div中 加入一个div和一个input标签 小div在左侧 input放右侧 用bo
  • 工程伦理答案

    今年是在线考试 刚刚考完 来一波分享吧 目录 1 客观题 2 主观题 3 主观题第3题答案 个性化推荐服务 应该怎么做才能合情合理又合法 1 客观题 2 主观题 这一部分我还没写完呢 唉 工程伦理主观题 案例分析 任选其一 500 1000
  • 进程-CPU和MMU/环境变量/创建子进程

    进程的相关概念 1 并发 2 单道程序设计 3 多道程序设计 4 cpu mmu 5 进程控制块 6 进程状态 环境变量 1 常用的环境变量作用 2 函数 进程控制原语 1 fork函数 循环创建子进程的架构 2 exec函数 各个函数的参
  • 解决chrom浏览器iframe嵌套写cookie问题

    chrom浏览器iframe嵌套写cookie 1 请求地址协议 2 response头部设置 3 提供如下方式进行设置 1 后端web服务代码如下 2 nginx服务器设置 场景分析描述 chrom浏览器环境下当前网站被第三方iframe
  • gitlab合并分支_拯救狗屎代码:基于 Gitlab 的代码审查,简单实用

    code review 的目的是提高代码质量 减少开发bug 俗话说 三人行必有我师 众人拾柴火焰高 gitlab提供了code review机制 对基于gitlab的code review 直接以具体例子的形式做个实践总结 gitlab提
  • PyTorch 2.0 重磅发布:编译、编译、还是编译!

    内容一览 昨晚召开的 PyTorch Conference 2022 中 官方正式发布了 PyTorch 2 0 本文将梳理 PyTorch 2 0 与 1 x 相比的最大差异 关键词 PyTorch 2 0 编译器 机器学习 在 PyTo
  • 55. Jump Game

    贪心算法 Jump Game I Given an array of non negative integers you are initially positioned at the first index of the array Ea
  • 【2023最新版】JetBrains Space注册+桌面版安装+IDE远程开发连接JetBrains Space

    目录 一 JetBrains Space 1 官网 2 简介 3 注册 二 安装桌面版 1 下载Jetbrains toolbox 2 安装Space Desktop 安装 登录 三 IDE连接JetBrains Space 以Pychar
  • 提供计算机屏蔽电缆djypvp价格便宜,计算机屏蔽电缆-DJYPVP价格

    计算机屏蔽电缆 DJYPVP价格一 用途 选用介点常数小的高压聚乙烯绝缘 采用对绞 对屏 总屏 或三线组绞合 组屏蔽 组屏总屏 等结构形式 具有介质损耗小 传输信号能力强 抗干扰性能好等特点 能可靠传输微弱模拟信号或数字信号 可广泛地用于发
  • Java中URI 和 URL 的区别

    URI 和 URL 的区别 文章目录 URI 和 URL 的区别 1 URI 2 URL 3 总结 参考文章 https blog csdn net zcc7up article details 73551250 1 URI 表示一个 统一
  • 自己写的一个非常简洁的DDS信号发生器以及验证

    DDS其实就是输出点 直接画出波形 例子1 假设基带采样时钟是360M 如果每个完整的正弦波形用360个点画出来 构造出来的DDS波形是360M 360 1M 例子2 在同样的采样时钟之下 如果我们要DDS出一个0 5M的波形怎么办呢 其实
  • Hive性能优化全面解析

    问题导读 1 Hive表设计层面优化有哪些内容 2 语法和参数层面如何进行优化 3 如何进行Join Group By Order By COUNT DISTINCT优化 4 Hive架构层面如何优化 在工作中使用hive比较多 也写了很多
  • ES6的模块化实现(数据共享)

    组件模块化 将一些数据只能在接收了的文件中使用 在多人开发中就不会出现自己的的内容被别人改了的现象 只要导出了就可以在多个文件中使用 可以一次性导出多个数据 也可以一次接收多个数据 下面是方法 方法一 直接共享 导出 export 数据 导
  • android 签字版

    public class DrawLineLayout extends View private static final float STROKE WIDTH 5f Need to track this so the dirty regi
  • jdbc 通过rs.getString()获取数据库中的时间字段问题

    在mysql中的一张表中存在一个字段opr time为datetime类型 在JDBC 中通过rs getString opr time 来获取使会在日期后面添加 0 例如日期为 2014 06 01 12 10 20 查询出来为 2014
  • 机器学习算法——决策树3(CART决策树算法)

    CART决策树使用 基尼指数 Gini index 来选择划分属性 我们希望决策树的分支结点所包含的样本尽可能属于同一类别 即节点的纯度越来越高 数据集D的纯度可用基尼值来度量 Gini D 越小 则数据集D的纯度越高 属性a的基尼指数定义
  • 机器学习实战之Apriori

    1 关联分析 1 1 定义 关联分析是一种在大规模数据上寻找物品间隐含关系的一种任务 这种关系有2种形式 频繁项集和关联规则 1 频繁项集 frequent item sets 经常出现在一起的物品的集合 2 关联规则 associatio