关联分析算法(一)——Apriori(先验算法)

2023-11-12

算法思路简介

Apriori根据原始的销售表:

  1. 第一步:列出所有元素,所有元素独立组成一个集合,计算每个集合的支持度。然后根据最小支持度的阈值剔除掉小的支持度的集合。
  2. 第二步:每个集合都增加一个与原有集合中没有的元素,构成多个新的集合,计算每个集合的支持度。然后根据最小支持度的阈值剔除掉小的支持度的集合。
  3. 依次循环,直到所有计算支持度的集合都被阈值卡掉。

详细的可以参考这个比较形象的描述:Apriori Algorithm

案例

使用mlxtend计算Apriori
github地址:https://github.com/rasbt/mlxtend
Mlxtend Doc:https://rasbt.github.io/mlxtend/

import pandas as pd
from mlxtend.preprocessing import TransactionEncoder  # 传入模型的数据需要满足特定的格式,可以用这种方法来转换为bool值,也可以用函数转换为0、1
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules

shopping_list = [['豆奶', '莴苣'],
                 ['莴苣', '尿布', '葡萄酒', '甜菜'],
                 ['豆奶', '尿布', '葡萄酒', '橙汁'],
                 ['莴苣', '豆奶', '尿布', '葡萄酒'],
                 ['莴苣', '豆奶', '尿布', '橙汁']]

shopping_df = pd.DataFrame(shopping_list)

df_arr = shopping_df.stack().groupby(level=0).apply(list).tolist()

te = TransactionEncoder()  # 定义模型
df_tf = te.fit_transform(df_arr)
df = pd.DataFrame(df_tf, columns=te.columns_)

# 求频繁项集:
frequent_itemsets = apriori(df, min_support=0.05, use_colnames=True)  # use_colnames=True 表示使用元素名字,默认的False使用列名代表元素
frequent_itemsets.sort_values(by='support', ascending=False, inplace=True)  # 频繁项集可以按支持度排序
print(frequent_itemsets[frequent_itemsets.itemsets.apply(lambda x: len(x)) >= 2])  # 选择长度 >=2 的频繁项集

# 求关联规则:
association_rule = association_rules(frequent_itemsets, metric='confidence',
                                     min_threshold=0.9)  # metric可以有很多的度量选项,返回的表列名都可以作为参数
association_rule.sort_values(by='leverage', ascending=False, inplace=True)  # 关联规则可以按leverage排序
print(association_rule)

参考资料

Apriori算法原理总结:https://www.cnblogs.com/pinard/p/6293298.html
WikiMapia Association rule learning:https://en.wikipedia.org/wiki/Association_rule_learning
一步步教你轻松学关联规则Apriori算法:https://bainingchao.github.io/2018/09/27/%E4%B8%80%E6%AD%A5%E6%AD%A5%E6%95%99%E4%BD%A0%E8%BD%BB%E6%9D%BE%E5%AD%A6%E5%85%B3%E8%81%94%E8%A7%84%E5%88%99Apriori%E7%AE%97%E6%B3%95/

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

关联分析算法(一)——Apriori(先验算法) 的相关文章

随机推荐

  • 使用Docker+Jenkins+Gitee自动化部署SpringBoot项目

    目录 搭建基础环境 1 使用Docker Compose搭建基础环境 2 搭建项目仓库环境 创建Dockerfile文件 2022 12 15更新 3 配置Jenkins 3 1 初始化Jenkins 3 2 安装核心插件 3 3 全局工具
  • 学习笔记1——常用的注意力机制(即插即用)

    在目标检测网络里加注意力机制已经是很常见的了 顾名思义 注意力机制是指在全局图像中获得重点关注的目标 常用的注意力机制有SE CA ECA CBAM GAM NAM等 1 SE模块 论文 https arxiv org pdf 1709 0
  • 【论文阅读】LASOR: Learning Accurate 3D Human Pose and Shape Via Synthetic Occlusion-Aware Data and Neural

    1 环境配置上 1 1 报错 1 1 1 opencv cv2 error OpenCV 4 6 0 error 5 Bad argument in function circle Overload resolution failed Ca
  • Flutter层叠布局 Stack、Positioned

    Flutter中使用Stack和Positioned这两个组件来配合实现绝对定位 Stack允许子组件堆叠 而Positioned用于根据Stack的四个角来确定子组件的位置 Stack alignment 此参数决定如何去对齐没有定位 没
  • FiddlerCore HTTPS 证书每次都需要创建的问题

    FiddlerCore HTTPS 证书每次都需要创建的问题 问题描述 我使用FiddlerCore来抓取HTTPS数据 需要安装证书 使用以下代码进行安装 安装证书 public static bool InstallCertificat
  • python读取mongoDb数据库保存到Excel CSV中

    import xlwt import pymongo import pandas as pd import xlsxwriter as xw 连接mongodb数据库 client pymongo MongoClient localhost
  • 防火墙安全策略&&防火墙安全区域的划分

    给两台PC任意设置两个网段 并划分好trust和untrust区域 利用默认账号密码登录 账号 admin密码 Admin 123 然后自行随意修改密码 给防火墙的两个接口配上对应地址并放行 两个接口进行同样的操作 这个时候还是不能够通信
  • API接口设计规范

    说明 在实际的业务中 难免会跟第三方系统进行数据的交互与传递 那么如何保证数据在传输过程中的安全呢 防窃取 除了https的协议之外 能不能加上通用的一套算法以及规范来保证传输的安全性呢 下面我们就来讨论下常用的一些API设计的安全方法 可
  • taro-vue3监听左滑/右滑手势退出

    一 业务背景 我做的是一个要货小程序 没有华丽的页面 没有购物车 就是在要货页面填写要货数量 然后跳转到预览页面 预览页面有保存和支付按钮 可以先点保存 再点支付 也可以直接点支付 支付的同时进行保存 问题 支付成功后直接跳转回菜单页面 但
  • pytorch利用resnet50实现cifar10准确率到95%以上

    目录 前言 代码 前言 因为课程需要 老师要求使用resnet18或者resnet50将cifar10训练到精度到达95 试过了网上其他很多方法 发现精度最高的是在预处理化的时候 图片resize到32 32 并且padding 4进行填充
  • elasticsearch 版本 2xx和5xx 及 elasticsearch5.x 新特性

    其实 elasticsearch5 x 和 elasticsearch2 x 并不区别很大 是因为 ELK里之前版本各种很混乱 直接升级到5 0了 其实 elasticsearch5 x 按理来说是elasticsearch3 x 只是为了
  • Pyside6 TableView 显示按钮 - QStyledItemDelegate 简单实现

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 目录 示例代码 效果图 参考链接 示例代码 coding utf 8 import sys from PySide6 QtCore import from PySide6 Q
  • 抓包工具tcpdump用法说明

    tcpdump采用命令行方式对接口的数据包进行筛选抓取 其丰富特性表现在灵活的表达式上 不带任何选项的tcpdump 默认会抓取第一个网络接口 且只有将tcpdump进程终止才会停止抓包 例如 shell gt tcpdump nn i e
  • 关于Java中代码块的执行顺序

    1 概念 代码块 使用 定义的一段代码 根据代码块出现的位置以及关键字不同 分为以下四种代码块 普通代码块 直接定义在方法内部 不加任何修饰符定义的代码块 解决变量重名问题 构造块 直接定义在类中 使用 的代码块 静态代码块 一般用于初始化
  • vue2项目引入vue-video-player

    直接安装npm install vue video player save报错 指定版本 npm install vue video player 5 0 1 save vue video player 其实就是 video js 集成到
  • Spring集成Mybatis时的常见报错

    这两个框架集成的时候最常见的是各种映射文件无法对应而引发的报错 根据不同的报错可以优先检查对应的位置 这样才能快速解决问题 1 找不到mybatis的映射文件 如下图 在定义SqlSessionFactoryBean 要注意对应关系 注意
  • ps太卡怎么办?几步帮您解决问题

    PS是一款非常常用的绘图软件 但是有些小伙伴感觉用PS会卡顿 可是电脑的配置也不是很低 排除PS本身的问题后 这种情况往往和ps里的基础设置有关 下面来看看该如何解决PS卡顿的问题吧 1 停用 主页 屏幕 现在很多小伙伴都用上了新版ps 新
  • 我的程序员之路进行中

    计划看的书 1 Windows程序设计 第5版珍藏版 1104页 2 Windows程序设计 第2版 王艳平 扫描版 490页 3 Windows核心编程 第5版 769页 4 竹林蹊径 深入浅出windows驱动开发 506页 5 Win
  • Mybatis小技巧之使用自动生成的主键值

    文章目录 一 需求 1 编写接口 2 编写mapper配置文件 3 测试程序 4 运行结果 一 需求 在数据库种类似id这样的主键值都是自动增长的 但是如果有这样的需求时 插入一条记录后 自动生成了主键 而这个主键需要在其他表中使用时 此时
  • 关联分析算法(一)——Apriori(先验算法)

    算法思路简介 Apriori根据原始的销售表 第一步 列出所有元素 所有元素独立组成一个集合 计算每个集合的支持度 然后根据最小支持度的阈值剔除掉小的支持度的集合 第二步 每个集合都增加一个与原有集合中没有的元素 构成多个新的集合 计算每个