关联规则挖掘是一种在大型数据集中发现项集之间有趣关系的方法。

简介: 关联规则挖掘是一种在大型数据集中发现项集之间有趣关系的方法。

一、关联规则挖掘简介

关联规则挖掘是一种在大型数据集中发现项集之间有趣关系的方法。最著名的关联规则挖掘算法之一是Apriori算法,它用于从交易数据(如超市购物篮分析)中找出商品之间的关联关系。关联规则挖掘的结果通常表示为形如“如果购买了A,那么很可能也会购买B”的规则。

二、Python代码示例

首先,确保您已经安装了mlxtend库。如果没有,请使用pip进行安装:

pip install mlxtend

接下来,我们将使用mlxtend.frequent_patterns模块中的apriori()association_rules()函数来挖掘关联规则。

import pandas as pd
from mlxtend.frequent_patterns import apriori, association_rules

# 示例数据集:超市购物篮数据
# 每行代表一个交易,每列代表一个商品(用整数或字符串表示)
dataset = [
    ['牛奶', '洋葱', '营养麦片', '鸡蛋'],
    ['啤酒', '尿布', '牛奶'],
    ['尿布', '啤酒', '鸡蛋', '橙汁'],
    ['牛奶', '尿布', '啤酒', '鸡蛋'],
    ['尿布', '啤酒'],
    # ... 更多交易数据
]

# 将数据集转换为one-hot编码的DataFrame
def encode_units(dataset):
    return pd.get_dummies(pd.DataFrame(list(map(frozenset, dataset))))

# 编码数据集
df = encode_units(dataset)

# 使用Apriori算法找出频繁项集
min_support = 0.2  # 最小支持度,表示项集在所有交易中出现的频率阈值
frequent_itemsets = apriori(df, min_support=min_support, use_colnames=True)

# 打印频繁项集
print("Frequent Itemsets:")
print(frequent_itemsets)

# 使用association_rules函数从频繁项集中生成关联规则
metric = "lift"  # 使用提升度(lift)作为评估指标
rules = association_rules(frequent_itemsets, metric=metric, min_threshold=1)

# 打印关联规则
print("\nAssociation Rules:")
print(rules[['antecedents', 'consequents', 'support', 'confidence', 'lift']])

三、代码解释

  1. 导入必要的库:首先,我们导入了pandas库来处理数据,以及mlxtend.frequent_patterns模块中的apriori()association_rules()函数。
  2. 准备数据集:我们创建了一个示例数据集,其中包含超市购物篮的交易数据。每个交易都是一个商品列表。
  3. 数据编码:由于Apriori算法需要one-hot编码的数据,我们定义了一个encode_units()函数来将原始数据集转换为one-hot编码的DataFrame。这里使用了pandasget_dummies()函数和frozenset来确保商品顺序不影响编码结果。
  4. 找出频繁项集:使用apriori()函数找出满足最小支持度阈值的频繁项集。支持度是项集在所有交易中出现的频率。通过调整min_support参数,我们可以控制频繁项集的严格程度。
  5. 生成关联规则:使用association_rules()函数从频繁项集中生成关联规则。该函数接受频繁项集作为输入,并输出包含前件(antecedents)、后件(consequents)、支持度(support)、置信度(confidence)和提升度(lift)等信息的关联规则。这里我们选择提升度作为评估指标,并设置最小阈值为1(即只输出提升度大于1的规则)。
  6. 打印结果:最后,我们打印出频繁项集和关联规则。频繁项集显示了哪些商品组合是频繁的,而关联规则则进一步揭示了这些商品组合之间的关联关系。

四、关联规则评估指标

  • 支持度(Support):表示项集在所有交易中出现的频率。支持度越高,表示该项集越常见。
  • 置信度(Confidence):表示在包含前件的交易中,也包含后件的概率。置信度越高,表示规则越可靠。
  • 提升度(Lift):表示包含前件和后件的交易频率与不包含前件时包含
    处理结果:

    一、关联规则挖掘简介

    关联规则挖掘是一种在大型数据集中发现项集之间有趣关系的方法。最著名的关联规则挖掘算法之一是Apriori算法,它用于从交易数据(如超市购物篮分析)中找出商品之间的关联关系。关联规则挖掘的结果通常表示为形如“如果购买了A,那么很可能也会购买B”的规则。

    二、Python代码示例

    首先,确保您已经安装了mlxtend库。如果没有,请使用pip进行安装:
    bashpython

    示例数据集:超市购物篮数据

    ['牛奶', '洋葱', '营养麦片', '鸡蛋'],
    ['啤酒', '尿布', '牛奶'],
    ['尿布', '啤酒', '鸡蛋', '橙汁'],
    ['牛奶', '尿布', '啤酒', '鸡蛋'],
    ['尿布', '啤酒'],

    ... 更多交易数据

    将数据集转换为one-hot编码的DataFrame

    return pd.get_dummies(pd.DataFrame(list(map(frozenset, dataset))))

    编码数据集

    使用Apriori算法找出频繁项集

    打印频繁项集

    使用association_rules函数从频繁项集中生成关联规则

    打印关联规则

  1. 导入必要的库:首先,我们导入了pandas库来处理数据,以及mlxtend.frequent_patterns模块中的apriori()association_rules()函数。
    准备数据集:我们创建了一个示例数据集,其中包含超市购物篮的交易数据。每个交易都是一个商品列表。
    数据编码:由于Apriori算法需要one-hot编码的数据,我们定义了一个encode_units()函数来将原始数据集转换为one-hot编码的DataFrame。这里使用了pandasget_dummies()函数和frozenset来确保商品顺序不影响编码结果。
    找出频繁项集:使用apriori()函数找出满足最小支持度阈值的频繁项集。支持度是项集在所有交易中出现的频率。通过调整min_support参数,我们可以控制频繁项集的严格程度。
    生成关联规则:使用association_rules()函数从频繁项集中生成关联规则。该函数接受频繁项集作为输入,并输出包含前件(antecedents)、后件(consequents)、支持度(support)、置信度(confidence)和提升度(lift)等信息的关联规则。这里我们选择提升度作为评估指标,并设置最小阈值为1(即只输出提升度大于1的规则)。
    打印结果:最后,我们打印出频繁项集和关联规则。频繁项集显示了哪些商品组合是频繁的,而关联规则则进一步揭示了这些商品组合之间的关联关系。

    四、关联规则评估指标

  • 支持度(Support):表示项集在所有交易中出现的频率。支持度越高,表示该项集越常见。
相关文章
|
8月前
|
数据可视化
R语言生态学进化树推断物种分化历史:分类单元数与时间关系、支系图可视化
R语言生态学进化树推断物种分化历史:分类单元数与时间关系、支系图可视化
R语言生态学进化树推断物种分化历史:分类单元数与时间关系、支系图可视化
|
5月前
|
机器学习/深度学习 算法
【机器学习】不同决策树的节点分裂准则(属性划分标准)
决策树的不同节点分裂准则,包括原始决策树的节点分裂准则、ID3算法的信息增益、C4.5算法的信息增益比以及CART算法的平方根误差最小化和基尼指数。
68 1
|
6月前
|
机器学习/深度学习 数据采集 数据挖掘
Python实现深度神经网络gcForest(多粒度级联森林)分类模型
Python实现深度神经网络gcForest(多粒度级联森林)分类模型
Python实现深度神经网络gcForest(多粒度级联森林)分类模型
|
8月前
|
存储 移动开发 算法
SPSS用KMEANS(K均值)、两阶段聚类、RFM模型在P2P网络金融研究借款人、出款人行为数据规律
SPSS用KMEANS(K均值)、两阶段聚类、RFM模型在P2P网络金融研究借款人、出款人行为数据规律
|
8月前
|
机器学习/深度学习 数据可视化
数据分享|R语言生存分析模型因果分析:非参数估计、IP加权风险模型、结构嵌套加速失效(AFT)模型分析流行病学随访研究数据
数据分享|R语言生存分析模型因果分析:非参数估计、IP加权风险模型、结构嵌套加速失效(AFT)模型分析流行病学随访研究数据
|
机器学习/深度学习 数据采集 存储
【机器学习6】数据预处理(三)——处理类别数据(有序数据和标称数据)
【机器学习6】数据预处理(三)——处理类别数据(有序数据和标称数据)
304 0
|
8月前
|
算法 数据可视化 数据挖掘
r语言有限正态混合模型EM算法的分层聚类、分类和密度估计及可视化(上)
r语言有限正态混合模型EM算法的分层聚类、分类和密度估计及可视化
|
8月前
|
算法 数据可视化 前端开发
r语言有限正态混合模型EM算法的分层聚类、分类和密度估计及可视化(下)
r语言有限正态混合模型EM算法的分层聚类、分类和密度估计及可视化
|
存储 Python
候选基因如何分析?
候选基因如何分析?
|
机器学习/深度学习 人工智能 算法
数据挖掘18大算法实现以及其他相关经典DM算法:决策分类,聚类,链接挖掘,关联挖掘,模式挖掘。图算法,搜索算法等
数据挖掘18大算法实现以及其他相关经典DM算法:决策分类,聚类,链接挖掘,关联挖掘,模式挖掘。图算法,搜索算法等