FP-Growth算法Python实现(FP增长算法python实现)

本文介绍了FP-Growth算法的Python实现,包括FP树的类定义、数据集处理、构建FP树、更新树等核心步骤。通过示例展示了如何使用Python代码构建FP树,并挖掘频繁项集。
摘要由CSDN通过智能技术生成

# -*- coding: utf-8 -*-
"""
Created on Sun Aug  5 17:29:40 2018

@author: wzy
"""
# FP树的类定义
class treeNode:
    def __init__(self, nameValue, numOccur, parentNode):
        # 节点名称
        self.name = nameValue
        # 节点出现次数
        self.count = numOccur
        # 不同项集的相同项通过nodeLink连接在一起
        self.nodeLink = None
        # 指向父节点
        self.parent = parentNode
        # 存储叶子节点
        self.children = {}
    # 节点出现次数累加
    def inc(self, numOccur):
        self.count += numOccur
    # 将树以文本形式显示
    def disp(self, ind=1):
        print('  '*ind, self.name, ' ', self.count)
        # 绘制子节点
        for child in self.children.values():
            # 缩进处理
            child.disp(ind + 1)


"""
函数说明:构建FP-tree

Parameters:
    dataSet - 需要处理的数据集合
    minSup - 最少出现的次数(支持度)
    
Returns:
    retTree - 树
    headerTable - 头指针表

Modify:
    2018-08-06
"""
def createTree(dataSet, minSup=1):
    headerTable = {}
    # 遍历数据表中的每一行数据
    for trans in dataSet:
        # 遍历每一行数据中的每一个数据元素
        # 统计每一个字母出现的次数,将次数保存在headerTable中
        for item in trans:
            # 字典get()函数返回指定键的值,如果值不在字典中返回0。
            # 由于dataSet里的每个列表均为frozenset所以每一个列表的值均为1即dataSet[trans]=1
            headerTable[item] = headerTable.get(item, 0) + dataSet[trans]
    # 遍历headerTable中的每一个字母
    # 若headerTable中的字母出现的次数小于minSup则把这个字母删除处理
    lessThanMinsup = list(filter(lambda k:headerTable[k] < minSup, headerTable.keys()))
    for k in lessThanMinsup: del(headerTable[k]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值