关联分析算法Apriori 和 FP-Growth (Python实现)

2023-12-18 16:15:19

一.原理

关联是指当一件事发生时,另外一件事也随着发生。关联分析也称关联挖掘,就是在各种数据之间挖掘规律或者模式。在数据挖掘中,最经典的案例就是尿不湿与啤酒的故事,这就是典型的关联关系。

关联规则的挖掘算法主要包括Apriori算法和FP-Growth算法。
? Apriori算法是一种基于候选生成和剪枝的经典算法。它首先生成所有的单个项集作为候选集,然后通过计算支持度来剪枝得到频繁项集,最后根据频繁项集生成关联规则。
? FP-Growth算法是一种基于前缀树的高效算法。它通过构建频繁模式树(FP-Tree)来存储数据,并通过递归的方式来发现频繁项集和关联规则。

二.算法代码

1.Apriori 代码

import pandas as pd  
from mlxtend.preprocessing import TransactionEncoder  
from mlxtend.frequent_patterns import apriori, association_rules  
  
# 1. 数据预处理  
dataset = [['Milk', 'Onion', 'Nutmeg', 'Kidney Beans', 'Eggs', 'Yogurt'],  
           ['Dill', 'Onion', 'Nutmeg', 'Kidney Beans', 'Eggs', 'Yogurt'],  
           ['Milk', 'Apple', 'Kidney Beans', 'Eggs'],  
           ['Milk', 'Unicorn', 'Corn', 'Kidney Beans', 'Yogurt'],  
           ['Corn', 'Onion', 'Onion', 'Kidney Beans', 'Ice cream', 'Eggs']]  
  
te = TransactionEncoder()  
te_ary = te.fit(dataset).transform(dataset)  
df = pd.DataFrame(te_ary, columns=te.columns_)  
  
# 2. 构建FP-tree  
frequent_itemsets = apriori(df, min_support=0.6, use_colnames=True)  
  
# 3. 挖掘频繁模式  
frequent_patterns = apriori(df, min_support=0.6, use_colnames=True, verbose=False)  
  
# 4. 生成关联规则  
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.7)  
  
# 5. 后处理  
print(rules)

2.FP-growth算法代码

import pandas as pd  
from mlxtend.preprocessing import TransactionEncoder  
from mlxtend.frequent_patterns import fp_growth  
  
# 1. 数据预处理  
dataset = [['Milk', 'Onion', 'Nutmeg', 'Kidney Beans', 'Eggs', 'Yogurt'],  
           ['Dill', 'Onion', 'Nutmeg', 'Kidney Beans', 'Eggs', 'Yogurt'],  
           ['Milk', 'Apple', 'Kidney Beans', 'Eggs'],  
           ['Milk', 'Unicorn', 'Corn', 'Kidney Beans', 'Yogurt'],  
           ['Corn', 'Onion', 'Onion', 'Kidney Beans', 'Ice cream', 'Eggs']]  
  
te = TransactionEncoder()  
te_ary = te.fit(dataset).transform(dataset)  
df = pd.DataFrame(te_ary, columns=te.columns_)  
  
# 2. 挖掘频繁模式  
frequent_patterns = fp_growth(df, min_support=0.6, use_colnames=True)  

rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.7)  
  
# 3. 后处理  
print(rules)

文章来源:https://blog.csdn.net/qq_42393720/article/details/135063196
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。