当前位置: 首页 > java >正文

【每天一个知识点】使用 apriori() 函数获取频繁项集

基于 Python 的 mlxtend.frequent_patterns 模块,使用 apriori() 函数获取频繁项集的过程主要包括以下几个步骤:


当然可以,下面是使用 apriori() 获取频繁项集的每一句代码的含义解释:


🔧 1. 安装依赖库

pip install mlxtend

含义: 安装用于挖掘频繁项集和关联规则分析的 Python 库 mlxtend(Machine Learning Extensions)。


📦 2. 数据准备

import pandas as pd

含义: 导入 pandas 库,用于处理结构化数据。


dataset = [['牛奶', '面包', '饼干'],['牛奶', '尿布', '啤酒', '鸡蛋'],['面包', '黄油', '尿布', '牛奶'],['面包', '牛奶', '尿布', '啤酒'],['面包', '牛奶', '尿布', '鸡蛋']
]

含义: 定义一个事务型数据列表,每一行表示一位顾客的购买清单,是 Apriori 算法的输入形式(事务集)。


from mlxtend.preprocessing import TransactionEncoder

含义:mlxtend 中导入 TransactionEncoder,用于将事务型数据转换为适合算法处理的格式。


te = TransactionEncoder()

含义: 创建一个 TransactionEncoder 对象,用于“编码”交易数据。


te_ary = te.fit(dataset).transform(dataset)

含义:

  • .fit(dataset):识别所有出现过的商品名称;

  • .transform(dataset):将每个事务转成布尔型数组(True/False),表明每个商品是否出现在某一事务中。


df = pd.DataFrame(te_ary, columns=te.columns_)

含义: 将布尔型数组转为 pandas 的 DataFrame 表格,每列为一个商品,行为一个事务,True/False 表示有/没有购买。


⚙️ 3. 调用 Apriori 算法

from mlxtend.frequent_patterns import apriori

含义: 导入 apriori 函数,用于生成频繁项集。


frequent_itemsets = apriori(df, min_support=0.5, use_colnames=True)

含义:

  • df:传入经过编码的数据;

  • min_support=0.5:设置最小支持度阈值为 50%,即只保留出现在 50% 以上交易中的项集;

  • use_colnames=True:显示商品名称而非索引数字;

  • frequent_itemsets:保存频繁项集的结果(包括支持度和项集本身)。


print(frequent_itemsets)

含义: 输出频繁项集结果表格,显示每个项集及其支持度。


4. 可选步骤:生成关联规则

from mlxtend.frequent_patterns import association_rules

含义: 导入 association_rules 函数,用于从频繁项集中挖掘有意义的“如果A就可能B”的规则。


rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.7)

含义:

  • frequent_itemsets 中生成关联规则;

  • metric="confidence":以“置信度”为衡量指标;

  • min_threshold=0.7:只保留置信度 ≥ 70% 的规则;

  • rules:保存规则的DataFrame,包含前件(antecedent)、后件(consequent)及其指标(支持度、置信度、提升度等)。


print(rules[['antecedents', 'consequents', 'support', 'confidence', 'lift']])

含义: 输出结果中每条规则的:

  • antecedents:前件(如果买了...)

  • consequents:后件(那么也可能买...)

  • support:规则中项集出现的比例

  • confidence:前件出现时后件也出现的概率

  • lift:提升度,衡量项集之间的关联强度


Apriori 频繁项集与关联规则挖掘完整脚本(Python + mlxtend)

# 安装依赖包(如果未安装)
# pip install mlxtend pandasimport pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori, association_rules# 1. 定义交易数据(事务型列表)
dataset = [['牛奶', '面包', '饼干'],['牛奶', '尿布', '啤酒', '鸡蛋'],['面包', '黄油', '尿布', '牛奶'],['面包', '牛奶', '尿布', '啤酒'],['面包', '牛奶', '尿布', '鸡蛋']
]# 2. 使用 TransactionEncoder 进行数据编码
te = TransactionEncoder()
te_ary = te.fit(dataset).transform(dataset)
df = pd.DataFrame(te_ary, columns=te.columns_)# 3. 使用 Apriori 算法挖掘频繁项集
frequent_itemsets = apriori(df, min_support=0.5, use_colnames=True)
print("【频繁项集】")
print(frequent_itemsets)# 4. 生成关联规则
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.7)
print("\n【关联规则】")
print(rules[['antecedents', 'consequents', 'support', 'confidence', 'lift']])

http://www.xdnf.cn/news/4355.html

相关文章:

  • 逐次逼近式A/D转换器
  • 线性回归练习1
  • 从基础到进阶:C++ 中 find 函数的全方位解析
  • MySQL 隐式转换及整数转浮点
  • 解锁健康生活:全新养身指南
  • Leetcode Hot 100 三数之和
  • Relay算子注册(在pytorch.py端调用)
  • 卷积神经网络实战(3)
  • 【基础】Python包管理工具uv使用全教程
  • Java日期格式化方法总结
  • DApp 开发:开启去中心化应用新时代
  • Spring事务和事务传播机制
  • C语言| 递归和循环的优缺点
  • 塔能水泵节能方案:精准驱动工厂能耗优化
  • 展锐Android13禁止用户使用超级省电
  • 新一代Python专业编译器Nuitka简介
  • ROS2:自定义接口文件(无废话)
  • 多模态理论知识
  • 二叉树与堆排序(概念|遍历|实现)
  • python酒店在线预定管理系统-酒店客房管理系统-快捷酒店入住系统
  • 【Linux系统】vim编辑器的使用
  • FoMo 数据集是一个专注于机器人在季节性积雪变化环境中的导航数据集,记录了不同季节(无雪、浅雪、深雪)下的传感器数据和轨迹信息。
  • C语言编程--递归程序--求数组的最大元素值
  • 油气地震资料信号处理中的NMO(正常时差校正)
  • 【网络篇】传输层TCP协议的确认应答,超时重传机制
  • IT咨询——企业数据资产怎样评估
  • 满分PPT | 基于数据运营的新型智慧城市实践与思考智慧城市数据中台解决方案智能建筑与智慧城市建设方案
  • 基于nacos实现动态线程池设计与实践:告别固定配置,拥抱弹性调度
  • LabVIEW与 IMAQ Vision 机器视觉应用
  • C++类与对象基础续