使用Python实现FPGrowth算法

本文将通过实例演示如何使用Python的pyfpgrowth库实现FPGrowth算法,并解释如何找出数据集中频繁出现的项集以及它们之间的关联规则。

1. 安装必要的库

首先,你需要安装pyfpgrowth库:

pip install pyfpgrowth

2. 代码示例

以下代码展示了如何使用pyfpgrowth库进行FPGrowth算法的实现。我们将使用一个简单的CSV文件data.csv作为示例,该文件包含了关于天气、假期和购买行为的数据。

import csv
import pyfpgrowth

transactions = []
with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        transactions.append(row)

patterns = pyfpgrowth.find_frequent_patterns(transactions, 2)
rules = pyfpgrowth.generate_association_rules(patterns, 0.7)

print(patterns)
print(rules)

3. 数据文件 (data.csv)

low,Winter,Holiday,Yes
low,Winter,Holiday,Yes
low,Winter,Holiday,Yes
low,Winter,Holiday,Yes
low,Winter,Holiday,Yes
low,Winter,Holiday,Yes
low,Winter,Holiday,Yes
low,Winter,Holiday,Yes
low,Winter,Holiday,Yes
low,Winter,Holiday,Yes
low,Winter,Holiday,Yes
low,Winter,Holiday,Yes
mid,Winter,Holiday,Yes
mid,Winter,Holiday,Yes
mid,Winter,Holiday,Yes
mid,Winter,Holiday,Yes

4. 运行结果

{('Holiday', 'Winter', 'low'): 12, ('Holiday', 'Winter', 'mid'): 4}
{(('Holiday', 'Winter'), ('Yes', 'low')): 1.0, (('Holiday', 'Winter', 'low'), ('Yes',)): 1.0, (('Winter', 'low'), ('Holiday', 'Yes')): 1.0, (('Holiday', 'low'), ('Winter', 'Yes')): 1.0, (('Holiday', 'low', 'Winter'), ('Yes',)): 1.0, (('low', 'Winter'), ('Holiday', 'Yes')): 1.0, (('Holiday',), ('Winter', 'Yes', 'low')): 1.0, (('Holiday', 'low'), ('Winter', 'Yes')): 1.0, (('Holiday', 'Winter'), ('Yes', 'mid')): 1.0, (('Holiday', 'mid'), ('Winter', 'Yes')): 1.0, (('Holiday', 'mid', 'Winter'), ('Yes',)): 1.0, (('mid', 'Winter'), ('Holiday', 'Yes')): 1.0}

结果解读:

  • 第一个结果 (patterns) 表示频繁项集。例如,('Holiday', 'Winter', 'low'): 12 表示'Holiday'、'Winter'和'low'这三个属性同时出现的次数为12次。
  • 第二个结果 (rules) 表示关联规则。例如,(('Holiday', 'Winter'), ('Yes', 'low')): 1.0 表示当同时出现'Holiday'和'Winter'时,'Yes'和'low'也同时出现的概率为1.0,意味着这两个属性的出现几乎是完全相关的。

总结:

本文通过实例演示了如何使用Python的pyfpgrowth库实现FPGrowth算法,并解释了如何找出数据集中频繁出现的项集以及它们之间的关联规则。FPGrowth算法在市场篮子分析、推荐系统、网页点击流分析等领域有着广泛的应用。

Python FPGrowth算法:用代码发现频繁项集和关联规则

原文地址: http://www.cveoy.top/t/topic/oszh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录