FP_Growth算法python实现

FP_Growth算法是关联分析中比较优秀的一种方法,它通过构造FP_Tree,将整个事务数据库映射到树结构上,从而大大减少了频繁扫描数据库的时间。

FP_Growth算法主要分成两个步骤,第一步是构造FP-Tree,第二步是从FP-Tree中提取频繁项集。

更多关联分析和FP_Growth的介绍以及伪代码请见:什么是关联分析FP-Growth算法的介绍

本文主要目的是介绍python实现FP_Growth算法的代码。




FP_Growth项目目录有四个文件:

>FP_Growth

 ? __init__.py

 ? tree_builder.py

 ? tree_building.py

 ? tree_miner.py

其中,tree_builder.py和tree_building.py文件主要负责FP-tree的构造,而tree_miner.py则是用来从构造好的FP-tree上提取频繁项集。

主程序所在的文件“\__init__.py”代码如下:

#coding=utf-8
import tree_builder
import tree_miner

routines = [
           [‘Cola‘,‘Egg‘,‘Ham‘],
           [‘Cola‘,‘Diaper‘,‘Beer‘],
           [‘Cola‘,‘Beer‘,‘Diaper‘,‘Ham‘],
           [‘Diaper‘,‘Beer‘]
        ]                                  #事务数据集
min_sup = 2                             #最小支持度计数
headerTable = {}        #头结点表,用来存放各个项的索引

treeBuilder = tree_builder.Tree_builder(routines=routines, min_sup=min_sup, headerTable=headerTable)    #建造FP_Tree
tree_miner.Tree_miner(Tree=treeBuilder.tree, min_sup=min_sup, headerTable=headerTable)         #对FP_Tree进行频繁项集的挖掘

它主要实现三个动作:

  1. 输入事务数据集routines;
  2. 调用tree_builder,构造FP-tree;
  3. 调用tree_miner,从FP-tree提取频繁项集;

FP-tree的构造请见:FP-Growth算法python实现之 FP-tree的构造

频繁项集的挖掘请见:FP-Growth算法python实现之频繁项集的挖掘

代码地址:FP-Growth算法python实现(完整代码)

备注:该代码是在 Python2.7+eclipse 环境下编写的。可在eclipse中导入项目,也可在命令行窗口用python命令执行“__init__.py”文件。

版权声明:转载请注明出处,谢谢!

时间: 2024-10-29 19:08:57

FP_Growth算法python实现的相关文章

FP-Growth算法python实现之频繁项集的挖掘

本文主要介绍从FP-tree中提取频繁项集的算法. 更多请见:FP-Growth算法的介绍.FP_Growth算法python实现.FP-Growth算法python实现之 FP-tree的构造. tree_miner.py代码: #coding=utf-8 import tree_builder import copy class Tree_miner(object): """tree_miner类. 作用:对Tree进行频繁项集的挖掘"""

【机器学习算法-python实现】采样算法的简单实现

1.背景 采样算法是机器学习中比较常用,也比较容易实现的(出去分层采样).常用的采样算法有以下几种(来自百度知道): 一.单纯随机抽样(simple random sampling) 将调查总体全部观察单位编号,再用抽签法或随机数字表随机抽取部分观察单位组成样本. 优点:操作简单,均数.率及相应的标准误计算简单. 缺点:总体较大时,难以一一编号. 二.系统抽样(systematic sampling) 又称机械抽样.等距抽样,即先将总体的观察单位按某一顺序号分成n个部分,再从第一部分随机抽取第k

【机器学习算法-python实现】矩阵去噪以及归一化

1.背景 项目需要,打算用python实现矩阵的去噪和归一化.用numpy这些数学库没有找到很理想的函数,所以一怒之下自己用标准库写了一个去噪和归一化的算法,效率有点低,不过还能用,大家如果有需要可以拿去. (1)去噪算法:根据概率论的知识,如果一组数据服从正态分布,我们设均值是n,方差是v,那么对于每个离散数值有百分之九十二以上的概率会在(n-3*v,n+3*v)的区间内.所以这里的去噪功能主要是实现如果超出了区间就将这个值标记为区间所能容忍最大值. (2)归一化:找到输入队列最大值max,最

【机器学习算法-python实现】协同过滤(cf)的三种方法实现

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 协同过滤(collaborative filtering)是推荐系统常用的一种方法.cf的主要思想就是找出物品相似度高的归为一类进行推荐.cf又分为icf和ucf.icf指的是item collaborative filtering,是将商品进行分析推荐.同理ucf的u指的是user,他是找出知趣相似的人,进行推荐.通常来讲icf的准确率可能会高一些,通过这次参加天猫大数据比赛,我觉得只有在数据量非

【机器学习算法-python实现】svm支持向量机(2)—简化版SMO算法

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景知识 通过上一节我们通过引入拉格朗日乗子得到支持向量机变形公式.详细变法可以参考这位大神的博客--地址 参照拉格朗日公式F(x1,x2,...λ)=f(x1,x2,...)-λg(x1,x2...).我们把上面的式子变型为: 约束条件就变成了: 下面就根据最小优化算法SMO(Sequential Minimal Optimization).找出距离分隔面最近的点,也就是支持向量集.如下图的蓝色点所示.

【机器学习算法-python实现】K-means无监督学习实现分类

1.背景 无监督学习的定义就不多说了,不懂得可以google.因为项目需要,需要进行无监督的分类学习. K-means里面的K指的是将数据分成的份数,基本上用的就是算距离的方法. 大致的思路就是给定一个矩阵,假设K的值是2,也就是分成两个部分,那么我们首先确定两个质心.一开始是找矩阵每一列的最大值max,最小值min,算出range=max-min,然后设质心就是min+range*random.之后在逐渐递归跟进,其实要想明白还是要跟一遍代码,自己每一步都输出一下看看跟自己想象的是否一样. (

FP-Growth算法python实现之 FP-tree的构造

本文主要介绍FP-tree的构造算法.上接:FP-Growth算法python实现. tree_builder.py代码: #coding=utf-8 import tree_building class Tree_builder(object): """tree_builder类. 作用:根据事务数据集进行数据准备及构造树.""" def __init__(self, routines, min_sup=-1, counts=[], heade

【机器学习算法-python实现】PCA 主成分分析、降维

1.背景 PCA(Principal Component Analysis),PAC的作用主要是降低数据集的维度,然后挑选出主要的特征. PCA的主要思想是移动坐标轴,找到方差最大的方向上的特征值,什么叫方差最大的方向的特征值呢.就像下图中的曲线B,一样,它的覆盖范围最广. 基本步骤:(1)首先计算数据集的协方差矩阵 (2)计算协方差矩阵的特征值和特征向量 (3)保留最重要的n个特征 what is 协方差矩阵: 定义是变量向量减去均值向量,然后乘以变量向量减去均值向量的转置再求均值.例如x是变

DFA最小化 -- Hopcroft算法 Python实现

问了 30 个技术群,也问了无数的前辈,真是各种不礼貌,吃了无数闭门羹,还是自己看着有点眉目了 还有 wiki 的伪代码看了总觉得奇怪,于是看了同一页面其他语言翻译过来的伪代码, 发现葡萄牙语和俄罗斯语那里的 if 判断都还缺少一个条件 国内的资料比较少,这几份学习资料不错,比我稀里糊涂的思路要好,分享下: http://www.liafa.univ-paris-diderot.fr/~carton/Enseignement/Complexite/ ENS/Redaction/2008-2009