# 关联挖掘

# 基本概念

频繁项集:n 项的集合。

支持度:代表 A、B 同时出现的概率,如果概率小,那么说明 A 与 B 的关系不大,如果 A、B 总是同时出现,那么说明他们是相关的。

support=P(AUB)support = P(AUB)

置信度:包含 A 的数据集中包含 B 的百分比。

# Apriori 算法

使用候选项集找频繁项集

核心思想,只要一个项集是非频繁的,那么包含他的项集就都是非频繁的。

# 算法实现

关联矩阵转布尔矩阵

data = final_data.copy()
def map_func(x):
    if x == 0:
        return False
    else:
        return True
for i in data.columns:
    data[i] = data[i].map(lambda x:map_func(x))

计算关联规则

from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori
#利用 Apriori 找出频繁项集
freq = apriori(data, min_support=0.1, use_colnames=True)
#导入关联规则包
from mlxtend.frequent_patterns import association_rules
#计算关联规则
result = association_rules(freq, metric="confidence", min_threshold=0.8)

这里采用最小支持度为 0.1,最小置信度为 0.8

image-20220227175750485

会得到如下 51 项关联规则,其中 support 代表支持度,confidence 代表提升度。

画图:

image-20220227175825809

Edited on

Give me a cup of [coffee]~( ̄▽ ̄)~*

Mr2 WeChat Pay

WeChat Pay