本文主要是介绍关联分析算法Apriori 和 FP-Growth (Python实现),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一.原理
关联是指当一件事发生时,另外一件事也随着发生。关联分析也称关联挖掘,就是在各种数据之间挖掘规律或者模式。在数据挖掘中,最经典的案例就是尿不湿与啤酒的故事,这就是典型的关联关系。
关联规则的挖掘算法主要包括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)
这篇关于关联分析算法Apriori 和 FP-Growth (Python实现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!