机器学习——Weak7.使用FP-growth算法来高效发现频繁项集

本文介绍了如何使用FP-growth算法进行高效频繁项集挖掘。首先讲解了FP树的类定义及其构建过程,接着通过一个简单数据集展示了数据包装器的使用。接着,文章详细阐述了如何从FP树中找出以特定元素结尾的所有路径,并通过递归的mineTree函数实现频繁项集的发现。
摘要由CSDN通过智能技术生成

使用FP-growth算法来高效发现频繁项集

FP-growth算法
优点:一般要快于Apriori
缺点:实现比较困难,在某些数据集上性能会下降
适用数据类型:标称型数据
FP-growth的一般流程
①收集数据:使用任意方法
②准备数据:由于存储的是集合,所以需要离散数据。如果要处理连续数据,需要将它们量化为离散值
③分析数据:使用任意方法
④训练算法:构建一个FP树,并对树进行挖掘
⑤测试算法:没有测试过程
⑥使用算法:可用于识别经常出现的元素项,从而用于制定决策、推荐元素或进行预测等应用中

  • FP树的类定义
class treeNode:
    def __init__(self, nameValue, numOccur, parentNode):
        self.name = nameValue
        self.count = numOccur
        self.nodeLink = None
        self.parent = parentNode      #needs to be updated
        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树构建函数
def createTree(dataSet, minSup=1): #create FP-tree from dataset but don't mine
    headerTable = {
   }
    #go over dataSet twice
    for trans in dataSet:#first pass counts frequency of occurance
        for item in trans:
            headerTable[item] = headerTable.get(item, 0) + dataSet[trans]
    for k in headerTable.keys():  #remove items not meeting minSup
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值