一、关联规则挖掘简介
关联规则挖掘是一种在大型数据集中发现项集之间有趣关系的方法。最著名的关联规则挖掘算法之一是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']])
三、代码解释
- 导入必要的库:首先,我们导入了
pandas
库来处理数据,以及mlxtend.frequent_patterns
模块中的apriori()
和association_rules()
函数。 - 准备数据集:我们创建了一个示例数据集,其中包含超市购物篮的交易数据。每个交易都是一个商品列表。
- 数据编码:由于Apriori算法需要one-hot编码的数据,我们定义了一个
encode_units()
函数来将原始数据集转换为one-hot编码的DataFrame。这里使用了pandas
的get_dummies()
函数和frozenset
来确保商品顺序不影响编码结果。 - 找出频繁项集:使用
apriori()
函数找出满足最小支持度阈值的频繁项集。支持度是项集在所有交易中出现的频率。通过调整min_support
参数,我们可以控制频繁项集的严格程度。 - 生成关联规则:使用
association_rules()
函数从频繁项集中生成关联规则。该函数接受频繁项集作为输入,并输出包含前件(antecedents)、后件(consequents)、支持度(support)、置信度(confidence)和提升度(lift)等信息的关联规则。这里我们选择提升度作为评估指标,并设置最小阈值为1(即只输出提升度大于1的规则)。 - 打印结果:最后,我们打印出频繁项集和关联规则。频繁项集显示了哪些商品组合是频繁的,而关联规则则进一步揭示了这些商品组合之间的关联关系。
四、关联规则评估指标
- 支持度(Support):表示项集在所有交易中出现的频率。支持度越高,表示该项集越常见。
- 置信度(Confidence):表示在包含前件的交易中,也包含后件的概率。置信度越高,表示规则越可靠。
- 提升度(Lift):表示包含前件和后件的交易频率与不包含前件时包含
处理结果:一、关联规则挖掘简介
关联规则挖掘是一种在大型数据集中发现项集之间有趣关系的方法。最著名的关联规则挖掘算法之一是Apriori算法,它用于从交易数据(如超市购物篮分析)中找出商品之间的关联关系。关联规则挖掘的结果通常表示为形如“如果购买了A,那么很可能也会购买B”的规则。二、Python代码示例
首先,确保您已经安装了mlxtend
库。如果没有,请使用pip进行安装:bash
python示例数据集:超市购物篮数据
['牛奶', '洋葱', '营养麦片', '鸡蛋'],
['啤酒', '尿布', '牛奶'],
['尿布', '啤酒', '鸡蛋', '橙汁'],
['牛奶', '尿布', '啤酒', '鸡蛋'],
['尿布', '啤酒'],... 更多交易数据
将数据集转换为one-hot编码的DataFrame
return pd.get_dummies(pd.DataFrame(list(map(frozenset, dataset))))编码数据集
使用Apriori算法找出频繁项集
打印频繁项集
使用association_rules函数从频繁项集中生成关联规则
打印关联规则
- 导入必要的库:首先,我们导入了
pandas
库来处理数据,以及mlxtend.frequent_patterns
模块中的apriori()
和association_rules()
函数。
准备数据集:我们创建了一个示例数据集,其中包含超市购物篮的交易数据。每个交易都是一个商品列表。
数据编码:由于Apriori算法需要one-hot编码的数据,我们定义了一个encode_units()
函数来将原始数据集转换为one-hot编码的DataFrame。这里使用了pandas
的get_dummies()
函数和frozenset
来确保商品顺序不影响编码结果。
找出频繁项集:使用apriori()
函数找出满足最小支持度阈值的频繁项集。支持度是项集在所有交易中出现的频率。通过调整min_support
参数,我们可以控制频繁项集的严格程度。
生成关联规则:使用association_rules()
函数从频繁项集中生成关联规则。该函数接受频繁项集作为输入,并输出包含前件(antecedents)、后件(consequents)、支持度(support)、置信度(confidence)和提升度(lift)等信息的关联规则。这里我们选择提升度作为评估指标,并设置最小阈值为1(即只输出提升度大于1的规则)。
打印结果:最后,我们打印出频繁项集和关联规则。频繁项集显示了哪些商品组合是频繁的,而关联规则则进一步揭示了这些商品组合之间的关联关系。四、关联规则评估指标
- 支持度(Support):表示项集在所有交易中出现的频率。支持度越高,表示该项集越常见。