【数据挖掘】Apriori算法

Apriori算法是经典的关联规则挖掘算法,用于从事务型数据库中发现频繁项集和强关联规则,特别常用于购物篮分析等场景。


🧠 核心思想(Apriori原则)

一个项集是频繁的,前提是它的所有子集也必须是频繁的。
即:“若某项集不频繁,它的超集也一定不频繁”

这个原则用于大大减少候选项集的数量,提高挖掘效率。


🚶 Apriori算法执行步骤

下面是算法流程(以最小支持度为前提):

① 扫描数据库,找出所有频繁1项集(L1)

  • 统计每个单个商品出现的次数

  • 丢掉那些支持度小于最小阈值的项

② 生成候选2项集(C2),计算频繁2项集(L2)

  • 将L1中的元素两两组合成C2

  • 扫描数据库计算这些组合的支持度

  • 保留满足最小支持度的组合,得到L2

③ 使用 L2 构造 C3,找出 L3……

  • 重复步骤直到没有更多频繁项集为止

④ 基于频繁项集生成关联规则

  • 从每个频繁项集中拆分出可能的规则A⇒B

  • 计算这些规则的置信度和提升度

  • 筛选满足置信度和提升度阈值的规则


✅ 示例(简化版)

事务如下:

事务ID商品列表
T1牛奶, 面包
T2牛奶, 尿布, 啤酒
T3面包, 尿布, 可乐
T4牛奶, 面包, 尿布
T5面包, 啤酒

最小支持度设为 0.4(2次出现)

  1. L1:频繁1项集:{牛奶}, {面包}, {尿布}, {啤酒} ✅({可乐}只出现1次,删除)

  2. C2(候选2项集):组合上面频繁1项集,比如 {牛奶, 面包}, {尿布, 啤酒} 等

  3. L2:选出支持度 ≥0.4 的组合,如 {牛奶, 面包}, {尿布, 啤酒}(若满足)

  4. L3:组合L2项集再继续下去……

  5. 对频繁项集,如 {牛奶, 尿布} 生成关联规则:

    • 例如 牛奶 ⇒ 尿布,计算置信度 = 支持(牛奶和尿布) / 支持(牛奶)


📦 应用场景

  • 零售行业的购物篮分析

  • 推荐系统(推荐某个商品时同时推荐相关联商品)

  • 医疗诊断中发现药物组合

  • Web日志分析(用户点击路径)


好的!下面是使用 Python 和 mlxtend 库来实现 Apriori 算法的完整示例。这个库简洁高效,适合教学和实践。


✅ 步骤一:安装依赖(如尚未安装)

pip install mlxtend

✅ 步骤二:准备事务数据

我们使用“啤酒与尿布”的经典示例:

import pandas as pd
from mlxtend.preprocessing import TransactionEncoder# 示例数据
dataset = [['牛奶', '面包'],['牛奶', '尿布', '啤酒'],['面包', '尿布', '可乐'],['牛奶', '面包', '尿布'],['面包', '啤酒']
]# 转换为0/1编码的DataFrame
te = TransactionEncoder()
te_ary = te.fit(dataset).transform(dataset)
df = pd.DataFrame(te_ary, columns=te.columns_)
print(df)

输出:

     啤酒    可乐     尿布     牛奶    面包
0  False  False  False   True   True
1   True  False   True   True  False
2  False   True   True  False   True
3  False  False   True   True   True
4   True  False  False  False   True

✅ 步骤三:使用 Apriori 算法找出频繁项集

from mlxtend.frequent_patterns import apriori# 设定最小支持度为0.4(即至少2次)
frequent_itemsets = apriori(df, min_support=0.4, use_colnames=True)
print(frequent_itemsets)

输出示例:

   support     itemsets
0      0.6       {面包}
1      0.6       {尿布}
2      0.6       {牛奶}
3      0.4       {啤酒}
4      0.4     {牛奶, 面包}
5      0.4     {牛奶, 尿布}
6      0.4     {尿布, 面包}

✅ 步骤四:生成关联规则

from mlxtend.frequent_patterns import association_rules# 使用置信度最小值筛选规则
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.6)
print(rules[['antecedents', 'consequents', 'support', 'confidence', 'lift']])

输出示例:

  antecedents consequents  support  confidence  lift
0      {牛奶}       {面包}     0.4        0.67   1.11
1      {面包}       {牛奶}     0.4        0.67   1.11
2      {牛奶}       {尿布}     0.4        0.67   1.11

✅ 总结

  • 频繁项集 通过 apriori() 计算,保留支持度高的组合;

  • 关联规则 通过 association_rules() 生成,评估置信度、提升度等;

  • 可调整 min_supportmin_threshold 控制挖掘深度。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/80354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单链表设计与实现

01. 单链表简介 在数据结构中,单链表的实现可以分为 带头结点 和 不带头结点 两种方式,这里我们讨论第二种方式。 头结点:链表第一个节点不存实际数据,仅作为辅助节点指向首元节点(第一个数据节点)。头指…

【论文阅读】——Articulate AnyMesh: Open-Vocabulary 3D Articulated Objects Modeling

文章目录 摘要一、介绍二、相关工作2.1. 铰接对象建模2.2. 部件感知3D生成 三、方法3.1. 概述3.2. 通过VLM助手进行可移动部件分割3.3. 通过几何感知视觉提示的发音估计3.4. 通过随机关节状态进行细化 四、实验4.1. 定量实验发音估计设置: 4.2. 应用程序 五、结论六、思考 摘要…

Zookeeper单机版安装部署

目录 1.1、概述1.2、系统环境1.3、部署流程1.3.1、下载安装包1.3.2、解压文件1.3.3、创建数据目录和日志目录1.3.4、配置ZooKeeper1.3.5、启动ZooKeeper服务1.3.6、连接和验证 1.4、Zookeeper服务管理命令1.4.1、启动Zookeeper服务1.4.2、停止Zookeeper服务1.4.3、查看Zookeepe…

在 Elasticsearch 中删除文档中的某个字段

作者:来自 Elastic Kofi Bartlett 探索在 Elasticsearch 中删除文档字段的方法。 更多有关 Elasticsearch 文档的操作,请详细阅读文章 “开始使用 Elasticsearch (1)”。 想获得 Elastic 认证?查看下一期 Elasticsear…

元数据和主数据

元数据和主数据是数据管理中的两个关键概念,其核心区别如下: 1. 定义与本质 元数据(Metadata) “关于数据的数据”,用于描述数据的属性、结构、来源、用途等上下文信息。 示例:数据库表的字段名称、数据类型…

java的Stream流处理

Java Stream 流处理详解 Stream 是 Java 8 引入的一个强大的数据处理抽象,它允许你以声明式方式处理数据集合(类似于 SQL 语句),支持并行操作,提高了代码的可读性和处理效率。 一、Stream 的核心概念 1. 什么是 Str…

llama-Factory不宜直接挂接Ollama的大模型

前言 llama-Factory尝试使用Ollama本地安装的大模型。 一、在Ollama中安装QWen 安装qwen:0.5b 安装完成了: 同理安装qwen2.5:0.5b 安装完毕后,再用ollama list进行查看: 我们在chatbox中进行查看: 说明这两个大模型,…

基于WSL用MSVC编译ffmpeg7.1

在windows平台编译FFmpeg,网上的大部分资料都是推荐用msys2mingw进行编译。在win10平台,我们可以采用另一种方式,即wslmsvc 实现window平台的ffmpeg编译。 下面将以vs2022ubuntu22.04 为例,介绍此方法 0、前期准备 安装vs2022 &…

vue3+vite项目引入tailwindcss

从2025年1月tailwindcss4.0发布开始使用tailwindcss比之前简化很多 1,安装 yarn add tailwindcss tailwindcss/vite2,配置vite.config.js import tailwindcss from tailwindcss/vite;...plugins: [tailwindcss(),...] ...3,在主css文件顶部添加 注意一定是css文件,不能是sc…

蓝牙RFCOMM协议概述

RFCOMM概述 概念 RFCOMM 协议提供了对 L2CAP 协议上的串行端口的模拟。该协议基于 ETSI 标准 GSM 07.10。 RFCOMM 采用与 TS07.10 相同的字节序列方式。所有二进制数字都按照从低位到高位的顺序,从左至右读。 两个使用RFCOMM通信的蓝牙设备可以打开多个仿真串行端…

[工具]B站缓存工具箱 (By 郭逍遥)

📌 项目简介 B站缓存工具箱是一个多功能的B站缓存工具,包含视频下载、缓存重载、文件合并及系统设置四大核心功能。基于yutto开发,采用图形化界面操作,极大简化B站资源获取与管理流程。 工具可以直接将原本缓存的视频读取&#…

算法训练营第十三天|226.翻转二叉树、101. 对称二叉树、 104.二叉树的最大深度、111.二叉树的最小深度

递归 递归三部曲: 1.确定参数和返回值2.确定终止条件3.确定单层逻辑 226.翻转二叉树 题目 思路与解法 第一想法: 递归,对每个结点进行反转 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, le…

sunset:Solstice靶场

sunset:Solstice https://www.vulnhub.com/entry/sunset-solstice,499/ 1,将两台虚拟机网络连接都改为NAT模式 2,攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182,靶场IP192.168.23.244 3&#xff…

AZScreenRecorder最新版:功能强大、操作简便的手机录屏软件

AZScreenRecorder最新版是一款功能强大的手机录屏软件,专为安卓设备设计。它无需ROOT权限,支持无限录制时长,操作简单,录制过程中可以随时暂停,满足不同用户的个性化录屏需求。此外,用户还可以自定义分辨率…

模块自动导入的小工具

import { ref, reactive, onMounted } from vue import { useRoute, useRouter } from vue-router项目里很多文件都需要引入这些公共库,比较繁琐,使用一个小工具可以自动导入,就不需要在每个文件里面都写这些导入的代码了。 通过命令行下载安…

【读书笔记】《编码:隐匿在计算机软硬件背后的语言》01 逻辑与开关

【读书笔记】《编码:隐匿在计算机软硬件背后的语言》01 逻辑与开关 前言01 逻辑与开关 前言 我是一名光学工程专业研二的学生,目前正处于找工作的阶段,根据往年师兄师姐找工作的情况,在西安这个城市不出意外我能找到的应该就是嵌入…

TXT编码转换工具iconv

iconv.exe是实现TXT编码转换的命令行工具,支持几百种编码格式的转换,利用它可以在自主开发程序上实现TXT文档编码的自动转换。 一、命令参数格式 Usage: iconv [-c] [-s] [-f fromcode] [-t tocode] [file ...] or: iconv -l 二、转换的示例 将UTF-8…

软考中级数据库备考-上午篇

背景 新工作主要做大数据平台,考一个软考中级数据库系统工程师,补足一下基础知识。 基础知识 1.计算机硬件基础知识 正确答案:C 正确答案:D 正确答案:C 正确答案:BC 正确答案:B 正确答案:D 正确答案:A DMA建立内存与外设的直接…

AtCoder AT_abc405_d ABC405D - Escape Route

前言 BFS 算法在 AtCoder 比赛中还是会考的,因为不常练习导致没想到,不仅错误 TLE 了很多,还影响了心态,3 发罚时后才 AC。 思路 首先,我们把所有位置和出口的距离算出来(用 BFS)&#xff0c…

【计算机视觉】目标检测:yoloV1~yoloV11项目论文及对比

以下是 YOLO (You Only Look Once) 系列模型从 V1 到 V11 的详细介绍和项目地址(截至2024年7月)。YOLO 是目标检测领域的里程碑模型,以其 实时性 和 高精度 著称,广泛应用于自动驾驶、安防监控、工业检测等领域。 YOLOv1 (2016) …