机器学习实战-第12章Fpgrowth代码勘误+递归打印效果分析

我们修改数据集,使用:

《数据挖掘导论》中的数据集:

def loadSimpDat():
    simpDat = [['a', 'b'],
                   ['b', 'c', 'd'],
                   ['a', 'c', 'd', 'e'],
                   ['a', 'd', 'e'],
                   ['a', 'b', 'c'],#与下面一条一样
                   ['a', 'b', 'c','d'],
                   ['a'],
                   ['a', 'b', 'c'],#与上面一条一样
                   ['a', 'b', 'd'],
                   ['b', 'c' ,'e']]

如果打印出来是这个,  

Null Set   1
     a   7
       c   1
         d   1
           e   1
       b   4
         c   2
           d   1
         d   1
       d   1
         e   1
     b   2
       c   2
         e   1
         d   1

 

那么对应的图就是下面这个的,注意,这里阅读上面的打印结果时,

是横着看的,不是竖着看的。

而数字则是横向和字母配对的。

å¾4

 

好了,问题来了,我们会发现图中a:8,代码输出却是a:7

这是为什么呢?

修改书中的代码即可:

def createInitSet(dataSet):
    retDict = {}
    for trans in dataSet:
        # retDict[frozenset(trans)] = 1
        retDict[frozenset(trans)]=retDict.get(frozenset(trans),  0) +1
    print"初始化数据retDict=",retDict
    return retDict

然后输出结果就会和图中一模一样了

 

   Null Set   1
     a   8
       c   1
         d   1
           e   1
       b   5
         c   3
           d   1
         d   1
       d   1
         e   1
     b   2
       c   2
         e   1
         d   1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值