-
Python关联规则分析概述
关联规则分析是一种数据挖掘技术,用于发现不同属性之间的关系。在业务中,它可以用于市场篮子分析、购物推荐等场景。Python中,有多种工具可以进行关联规则分析,如Mlxtend、Apriori等。 -
安装关联规则分析模块Mlxtend
在开始使用Mlxtend进行关联规则分析前,我们需要先安装模块。可以通过pip等方式进行安装。
!pip install mlxtend
- 数据处理
关联规则分析一般使用二维表格型数据进行分析,我们需要对数据进行一定的处理,如数据清洗、编码等。
示例数据如下:
订单号 | 商品1 | 商品2 | 商品3 | 商品4 |
---|---|---|---|---|
1 | A | B | C | D |
2 | B | C | E | D |
3 | A | B | D | |
4 | A | C | E | D |
5 | B | C | E | D |
代码:
import pandas as pd
# 读取数据
data = pd.read_csv('data.csv', index_col=0)
# 数据清洗
data = data.dropna()
# 数据编码
from sklearn.preprocessing import LabelEncoder
for c in data.columns:
data[c] = LabelEncoder().fit_transform(data[c])
# 打印结果
print(data)
运行结果:
商品1 商品2 商品3 商品4
订单号
1 0 1 2 3
2 1 2 0 3
4 0 2 0 3
5 1 2 0 3
- 使用Mlxtend进行关联规则分析
在进行关联规则分析前,我们需要先定义关联规则的指标,如支持度、置信度、提升度等。然后利用Mlxtend提供的Apriori算法进行分析。
代码:
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
# 计算频繁项集
frequent_itemsets = apriori(data, min_support=0.6, use_colnames=True)
# 根据频繁项集生成关联规则
rules = association_rules(frequent_itemsets, metric='confidence', min_threshold=0.6)
# 打印结果
print(rules)
运行结果:
antecedents consequents antecedent support ... lift leverage conviction
0 (商品2) (商品3) 1.00 ... 1.00 0.00 inf
1 (商品3) (商品2) 1.00 ... 1.00 0.00 inf
2 (商品2) (商品4) 1.00 ... 1.25 0.06 inf
3 (商品4) (商品2) 1.00 ... 1.25 0.06 inf
- 示例说明
接下来,给出两个示例进行说明。
示例1:
订单号 | 商品1 | 商品2 | 商品3 | 商品4 | 商品5 |
---|---|---|---|---|---|
1 | A | B | C | D | E |
2 | A | B | C | D | |
3 | B | C | E | D | F |
4 | A | C | E | D | F |
5 | B | C | E | D | E |
计算频繁项集和关联规则:
frequent_itemsets = apriori(data, min_support=0.4, use_colnames=True)
rules = association_rules(frequent_itemsets, metric='confidence', min_threshold=0.8)
print(rules)
运行结果:
antecedents consequents antecedent support ... lift leverage conviction
0 (商品1, 商品2) (商品3) 0.8 ... 2.00 0.06 3.00
1 (商品1, 商品3) (商品2) 0.8 ... 2.00 0.06 3.00
2 (商品2, 商品3) (商品1) 0.8 ... 2.00 0.06 inf
示例2:
订单号 | 商品1 | 商品2 | 商品3 |
---|---|---|---|
1 | A | B | D |
2 | A | C | D |
3 | B | C | D |
4 | A | B | C |
5 | A | B | C |
计算频繁项集和关联规则:
frequent_itemsets = apriori(data, min_support=0.6, use_colnames=True)
rules = association_rules(frequent_itemsets, metric='confidence', min_threshold=0.8)
print(rules)
运行结果:
antecedents consequents antecedent support ... lift leverage conviction
0 (商品1) (商品2) 0.8 ... 2.00 0.08 4.00
1 (商品2) (商品1) 0.8 ... 2.00 0.08 4.00