Python中的关联规则挖掘:使用`mlxtend`和`apriori`算法

作者:demo2024.02.17 04:36浏览量:159

简介:关联规则挖掘是一种用于发现数据集中项之间的有趣关系的强大技术。在Python中,我们可以使用`mlxtend`和`apriori`算法进行关联规则挖掘。本文将介绍如何使用这些工具进行关联规则挖掘,并给出实际应用和代码示例。

关联规则挖掘是一种强大的数据挖掘技术,用于发现数据集中项之间的有趣关系。在Python中,我们可以使用mlxtendapriori算法进行关联规则挖掘。mlxtend是一个用于扩展Python标准库的机器学习库,而apriori是一种经典的关联规则挖掘算法。

一、安装mlxtend

要使用mlxtend库,首先需要安装它。你可以使用pip命令进行安装:

  1. `pip install mlxtend`

二、使用mlxtend进行关联规则挖掘

安装完mlxtend库后,你可以使用它来进行关联规则挖掘。下面是一个简单的示例代码,演示如何使用mlxtend库进行关联规则挖掘:

  1. ```python
  2. import pandas as pd
  3. from mlxtend.preprocessing import TransactionEncoder
  4. from mlxtend.frequent_patterns import apriori, association_rules
  5. # 示例数据集,每个项是一个字符串列表
  6. dataset = [['牛奶', '面包', '黄油'],
  7. ['牛奶', '面包'],
  8. ['面包', '黄油'],
  9. ['牛奶', '黄油'],
  10. ['牛奶', '面包', '黄油'],
  11. ['面包', '黄油', '果酱'],
  12. ['牛奶', '面包', '黄油', '果酱']]
  13. # 将数据集转换为DataFrame格式,并指定列为'items'
  14. df = pd.DataFrame(dataset, columns=['items'])
  15. # 使用TransactionEncoder对数据进行编码,生成候选项集和频繁项集
  16. e = TransactionEncoder()
  17. e_ary = e.fit(df['items']).transform(df['items'])
  18. ary = pd.Series(e_ary, name='items')
  19. item_sets = ary.map(set).unique()
  20. length_itemset = len(item_sets[0])
  21. freq_itemsets = pd.Series(list(map(set, e_ary))).value_counts()
  22. min_support = 0.5 # 最小支持度为50%
  23. freq_itemsets_above_min_support = freq_itemsets[freq_itemsets >= min_support]
  24. length_itemset = len(freq_itemsets[freq_itemsets >= min_support][0])
  25. # 生成频繁项集列表
  26. freq_itemset = freq_itemsets[freq_itemsets >= min_support].index.tolist()
  27. # 生成关联规则列表
  28. rules = association_rules(freq_itemset, metric='confidence', min_threshold=0.7)
  29. rules = sorted(r[1:] for r in rules) # 排序规则列表
  30. print('关联规则:')
  31. for i in range(len(rules)):
  32. antecedents = list(map(lambda x: item_sets[x], rules[i][0]))
  33. consequents = list(map(lambda x: item_sets[x], rules[i][1]))
  34. print('规则 {}: 前提 {} -> 结果 {} (置信度 {})'.format(i+1, antecedents, consequents, rules[i][2]))

```