这里我给你详细讲解一下“浅谈Python实现Apriori算法介绍”的完整攻略。
1. 什么是Apriori算法?
Apriori算法是一种基于频繁项集的一种算法,用于挖掘关联规则。在数据挖掘中,关联规则是指一个事物与其它事物在数据集中同时出现的频繁程度。Apriori算法具有较高的效率,也比较容易理解和实现。
该算法可以分为两个步骤:
1. 找出所有符合最小支持度的频繁项集;
2. 根据最小置信度,从前面的结果中找出满足要求的关联规则。
2. 如何使用Python实现Apriori算法?
在Python中实现Apriori算法可以使用第三方库mlxtend
。如果没有安装该库,可以使用以下命令进行安装:
!pip install mlxtend
在安装完该库后,我们就可以使用Apriori
类对数据集进行挖掘了。以下是一个简单的示例,可以帮助您更好地理解该算法的实现过程。
示例1
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori
data = [['香蕉', '苹果', '葡萄'],
['香蕉', '葡萄'],
['香蕉', '苹果'],
['香蕉', '梨', '苹果', '葡萄'],
['梨', '葡萄']]
te = TransactionEncoder()
te_ary = te.fit_transform(data)
df = pd.DataFrame(te_ary, columns=te.columns_)
frequent_itemsets = apriori(df, min_support=0.6, use_colnames=True)
print(frequent_itemsets)
以上示例中,我们先定义了一个数据集,然后使用TransactionEncoder
将数据进行编码。接着,我们使用apriori
函数计算频繁项集,设定最小支持度为0.6。最后,我们输出结果,得到如下输出:
support itemsets
0 0.6 (香蕉)
1 0.6 (苹果)
2 0.8 (葡萄)
3 0.6 (苹果, 香蕉)
4 0.6 (葡萄, 香蕉)
示例中的输出结果表明,在该数据集中,香蕉、苹果、葡萄三种物品各自的支持度都达到了0.6,同时,苹果和香蕉、葡萄和香蕉的支持度也达到了0.6。
示例2
下面的示例中,我将使用一个较大的数据集,来演示如何使用Apriori算法进行数据挖掘,比上例更加复杂。
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori
#定义数据集
data = [['牛奶', '洋葱', '肉豆蔻', '鸡蛋', '麦片'],
['莳萝', '洋葱', '肉豆蔻', '鸡蛋', '麦片'],
['牛奶', '苹果', '鸡蛋'],
['牛奶', '莳萝', '洋葱', '肉豆蔻'],
['鸡蛋', '莳萝', '洋葱', '牛奶'],
['鸡蛋', '莳萝', '洋葱', '麦片'],
['莳萝', '葡萄酒', '芸豆', '鸡蛋'],
['鸡蛋', '葡萄酒', '洋葱', '肉豆蔻']]
# 进行编码
te = TransactionEncoder()
te_ary = te.fit_transform(data)
df = pd.DataFrame(te_ary, columns=te.columns_)
# 计算频繁项集
frequent_itemsets = apriori(df, min_support=0.4, use_colnames=True)
# 发现关联规则
from mlxtend.frequent_patterns import association_rules
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.6)
# 输出结果
print(rules)
在上面的代码示例中,我们首先定义了一个比较复杂的数据集。接着,我们使用TransactionEncoder
进行编码,使用apriori
计算频繁项集,设定最小支持度为0.4。接着,我们使用association_rules
函数计算关联规则,设定最小置信度为0.6。最后,我们输出结果,得到以下结果:
antecedents consequents antecedent support consequent support support confidence lift leverage conviction
0 (洋葱) (牛奶) 0.5 0.5 0.400000 0.80 1.600000 0.1500 2.500000
1 (牛奶) (洋葱) 0.5 0.5 0.400000 0.80 1.600000 0.1500 2.500000
2 (鸡蛋) (牛奶) 0.5 0.5 0.400000 0.80 1.600000 0.1500 2.500000
3 (牛奶) (鸡蛋) 0.5 0.5 0.400000 0.80 1.600000 0.1500 2.500000
4 (肉豆蔻) (洋葱) 0.4 0.5 0.400000 1.00 2.000000 0.2000 inf
5 (洋葱) (肉豆蔻) 0.5 0.4 0.400000 0.80 2.000000 0.2000 2.500000
6 (肉豆蔻) (鸡蛋) 0.4 0.5 0.400000 1.00 2.000000 0.2000 inf
7 (鸡蛋) (肉豆蔻) 0.5 0.4 0.400000 0.80 2.000000 0.2000 2.500000
8 (莳萝) (肉豆蔻, 鸡蛋) 0.5 0.4 0.400000 0.80 2.000000 0.2000 2.500000
9 (肉豆蔻) (莳萝, 鸡蛋) 0.4 0.5 0.400000 1.00 2.000000 0.2000 inf
10 (鸡蛋) (莳萝, 肉豆蔻) 0.5 0.4 0.400000 0.80 2.000000 0.2000 2.500000
11 (肉豆蔻, 莳萝) (鸡蛋) 0.3 0.5 0.300000 1.00 2.000000 0.1500 inf
12 (莳萝, 鸡蛋) (肉豆蔻) 0.4 0.4 0.300000 0.75 1.875000 0.1400 2.000000
13 (肉豆蔻, 鸡蛋) (莳萝) 0.4 0.5 0.400000 1.00 2.000000 0.2000 inf
输出结果表明,经过数据挖掘后我们得到了满足最小置信度0.6的关联规则,例如,购买牛奶的人有80%的概率会购买洋葱;购买洋葱的人有80%的概率会购买牛奶。
总结
以上是实现Apriori算法的Python攻略。在实际应用中,可以根据数据集的规模和特点,调整最小支持度和最小置信度来得到更合适的结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈Python实现Apriori算法介绍 - Python技术站