R 语言 Apriori 关联规则算法

1、加载数据集,按照设定参数进行计算

"whole milk" 全脂牛奶

"other vegetables" 其他蔬菜

"rolls/buns" 面包卷

"yogurt" 酸奶

"soda" 汽水

"bottled water" 瓶装水

R 复制代码
# 安装并加载包
#install.packages("arules")
library(arules)

#Apriori 要求数据为事务型数据(transactions),两种常见来源:
#直接用 Groceries 内置购物篮数据集(最常用示例)
#普通数据框转换为事务格式
# 加载内置购物篮数据
data(Groceries)

# 查看所有商品列表
itemLabels(Groceries)

# 查看前 5 条交易的项集
inspect(head(Groceries, 5))

# 查看所有商品的出现频率(从高到低)
print(itemFrequencyPlot(Groceries, topN = 10))

# 运行Apriori算法
rules <- apriori(
  data = Groceries,
  parameter = list(
    supp = 0.01,    # 最小支持度1%
    conf = 0.3,     # 最小置信度30%
    target = "rules"
  )
)

# 查看结果
inspect(head(rules, 10))

2、查看结果

> inspect(head(rules, 10))

lhs rhs support confidence coverage lift count

1 {hard cheese} => {whole milk} 0.01006609 0.4107884 0.02450432 1.607682 99

2 {butter milk} => {other vegetables} 0.01037112 0.3709091 0.02796136 1.916916 102

3 {butter milk} => {whole milk} 0.01159126 0.4145455 0.02796136 1.622385 114

4 {ham} => {whole milk} 0.01148958 0.4414062 0.02602949 1.727509 113

5 {sliced cheese} => {whole milk} 0.01077783 0.4398340 0.02450432 1.721356 106

6 {oil} => {whole milk} 0.01128622 0.4021739 0.02806304 1.573968 111

7 {onions} => {other vegetables} 0.01423488 0.4590164 0.03101169 2.372268 140

8 {onions} => {whole milk} 0.01209964 0.3901639 0.03101169 1.526965 119

9 {berries} => {yogurt} 0.01057448 0.3180428 0.03324860 2.279848 104

10 {berries} => {other vegetables} 0.01026945 0.3088685 0.03324860 1.596280 101

R 复制代码
# 按提升度排序,看强关联规则
rules_sorted <- sort(rules, by = "lift", decreasing = TRUE)
inspect(head(rules_sorted, 5))

> inspect(head(rules_sorted, 5))

lhs rhs support confidence coverage lift

1 {citrus fruit, other vegetables} => {root vegetables} 0.01037112 0.3591549 0.02887646 3.295045

2 {tropical fruit, other vegetables} => {root vegetables} 0.01230300 0.3427762 0.03589222 3.144780

3 {beef} => {root vegetables} 0.01738688 0.3313953 0.05246568 3.040367

4 {citrus fruit, root vegetables} => {other vegetables} 0.01037112 0.5862069 0.01769192 3.029608

5 {tropical fruit, root vegetables} => {other vegetables} 0.01230300 0.5845411 0.02104728 3.020999

count

1 102

2 121

3 171

4 102

5 121

3、散点图

R 复制代码
#install.packages("arulesViz")
library(arulesViz)

# 散点图:支持度/置信度/提升度(映射为颜色)
plot(rules, measure = c("support", "confidence"), shading = "lift")

4、网络图

R 复制代码
# 网络图展示规则关系,前10条规则
plot(head(rules_sorted, 10), method = "graph")
R 复制代码
# 只找结果包含"牛奶"的规则
milk_rules <- subset(rules, rhs %in% "whole milk")
inspect(milk_rules)

5、数据转事物

R 复制代码
#-------------------数据转事物--------------
# 示例原始数据框
df <- data.frame(
  T1 = c("牛奶", "面包", "鸡蛋"),
  T2 = c("面包", "可乐"),
  T3 = c("牛奶", "可乐", "薯片"),
  T4 = c("牛奶", "面包", "可乐")
)

# 转为事务格式
trans <- as(df, "transactions")

# 执行Apriori
rules2 <- apriori(trans, parameter = list(supp = 0.2, conf = 0.5))
inspect(rules2)

#查看前5条规则
inspect(head(sort(rules2,by = "lift", decreasing = TRUE),5))
相关推荐
SL_staff19 小时前
告别报表重复开发:JVS-BI 模板市场的参数化继承实践
java·数据分析·数据可视化
SelectDB20 小时前
时间旅行与快照能力速查:Doris 侧三条落地路径
大数据·数据库·数据分析
SelectDB20 小时前
云数仓成本结构拆解速查:五层计费 vs Doris / 托管形态
大数据·数据库·数据分析
SelectDB20 小时前
什么场景能承接与建议保留:Doris vs Snowflake 边界速查
大数据·数据库·数据分析
注塑机数据采集联网1 天前
如何解决注塑机数据采集联网对接MES系统数据WiFi传输数据不稳问题
大数据·数据库·物联网·数据挖掘·数据分析
benchmark_cc1 天前
实时行情和分钟 K 线应该如何配合使用?从信号计算到交易决策的完整分析
大数据·python·数据分析·pandas·量化交易·股票数据·quantdash
roman_日积跬步-终至千里1 天前
【数据Agent论文·分析与报告评测|27】ComInsight:原子洞察正确,组合后的结论就可靠吗?
人工智能·算法·机器学习·数据分析
爱读书的小胖1 天前
Codewars:Last digit of a large number(C)解题分析
c语言·开发语言·r语言
学术 学术 Fun1 天前
科研公开数据集怎么找?从关键词到许可证与数据引用
数据分析·科研·开放数据