Python关联规则挖掘:实现和应用

作者:有好多问题2024.02.19 05:47浏览量:25

简介:本文将介绍关联规则挖掘的基本概念和常用算法,并给出Python中实现关联规则挖掘的代码示例和实际应用案例。

关联规则挖掘是数据挖掘中的一种重要技术,用于发现数据集中项之间的有趣关系。常见的关联规则挖掘算法有Apriori算法和FP-Growth算法。在Python中,我们可以使用mlxtendpyfpgrowth等库来实现关联规则挖掘。

首先,我们需要安装这些库。可以使用pip命令进行安装:

  1. pip install mlxtend pyfpgrowth

接下来,我们将使用Apriori算法和FP-Growth算法分别实现关联规则挖掘。

Apriori算法

Apriori算法是一种基于频繁项集的关联规则挖掘算法。它的基本思想是通过找出数据集中的频繁项集,然后利用频繁项集生成关联规则。

下面是一个使用mlxtend库实现Apriori算法的示例代码:

  1. import pandas as pd
  2. from mlxtend.preprocessing import TransactionEncoder
  3. from mlxtend.frequent_patterns import apriori, association_rules
  4. # 加载数据集
  5. dataset = [['牛奶', '面包', '黄油'],
  6. ['牛奶', '面包', '果酱'],
  7. ['牛奶', '面包', '黄油', '果酱'],
  8. ['牛奶', '黄油'],
  9. ['面包', '黄油', '果酱'],
  10. ['牛奶', '面包', '黄油']]
  11. # 对数据进行预处理和编码
  12. te = TransactionEncoder()
  13. te_ary = te.fit(dataset).transform(dataset)
  14. df = pd.DataFrame(te_ary, columns=te.columns_)
  15. df = df.fillna(0) # 填充缺失值,防止出现NaN的情况
  16. # 找出频繁项集和关联规则
  17. frequent_itemsets = apriori(df, min_support=0.6, use_colnames=True)
  18. rules = association_rules(frequent_itemsets, metric='confidence', min_threshold=0.7)
  19. # 输出结果
  20. print('频繁项集:')
  21. print(frequent_itemsets)
  22. print('关联规则:')
  23. print(rules)

在上面的代码中,我们首先加载了一个简单的数据集,然后使用mlxtend库中的TransactionEncoder类对数据进行预处理和编码。接下来,我们使用apriori函数找出频繁项集,并使用association_rules函数生成关联规则。最后,我们输出频繁项集和关联规则的结果。

FP-Growth算法

FP-Growth算法是一种高效的关联规则挖掘算法。它通过构建FP-Tree来找出频繁项集和关联规则。在Python中,我们可以使用pyfpgrowth库来实现FP-Growth算法。

下面是一个使用pyfpgrowth库实现FP-Growth算法的示例代码:

```python
import pandas as pd
import pyfpgrowth

加载数据集

dataset = [[‘牛奶’, ‘面包’, ‘黄油’],
[‘牛奶’, ‘面包’, ‘果酱’],
[‘牛奶’, ‘面包’, ‘黄油’, ‘果酱’],
[‘牛奶’, ‘黄油’],
[‘面包’, ‘黄油’, ‘果酱’],
[‘牛奶’, ‘面包’, ‘黄油’]]

对数据进行预处理和编码

te = pyfpgrowth.TransactionEncoder()
teary = te.fit(dataset).transform(dataset)
df = pd.DataFrame(te_ary, columns=te.columns
)
df = df.fillna(0) # 填充缺失值,防止出现NaN的情况

找出频繁项集和关联规则

frequent_itemsets, rules = pyfpgrowth.find_frequent_patterns(df, min_support=0.6)
strong_rules = pyfpgrowth.generate_association_rules(frequent_itemsets, min_confidence=0.7)
result = pd.DataFrame({‘Pattern’: frequent_itemsets, ‘Rule’: strong_rules}) # 返回的数据包括频繁项集和强关联规则及其置信度等指标。将它们放入一个DataFrame中返回。强关联规则为满足最小置信度的关联规则。也可以设定其他的阈值。另外返回的关联规则中的项在左边的部分被看作是条件,右边的部分被看作是结果。如 {a: 1, b: 1, c: 1}