详解Python 关联规则分析

  • Post category:Python
  1. Python关联规则分析概述
    关联规则分析是一种数据挖掘技术,用于发现不同属性之间的关系。在业务中,它可以用于市场篮子分析、购物推荐等场景。Python中,有多种工具可以进行关联规则分析,如Mlxtend、Apriori等。

  2. 安装关联规则分析模块Mlxtend
    在开始使用Mlxtend进行关联规则分析前,我们需要先安装模块。可以通过pip等方式进行安装。

!pip install mlxtend
  1. 数据处理
    关联规则分析一般使用二维表格型数据进行分析,我们需要对数据进行一定的处理,如数据清洗、编码等。

示例数据如下:

订单号 商品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
  1. 使用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:

订单号 商品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