首页 » 机器学习实战 » 机器学习实战全文在线阅读

《机器学习实战》12.5 示例:从新闻网站点击流中挖掘

关灯直达底部

好了,本章的最后一个例子很酷,而你有可能正在想:“伙计,这个算法应该很快,因为只有1400条推文!”你的想法是正确的。下面在更大的文件上看下运行效果。在源数据集合中,有一个kosarak.dat文件,它包含将近100万条记录1。该文件中的每一行包含某个用户浏览过的新闻报道。一些用户只看过一篇报道,而有些用户看过2498篇报道。用户和报道被编码成整数,所以查看频繁项集很难得到更多的东西,但是该数据对于展示FP-growth算法的速度十分有效。

1. Hungarian online news portal clickstream retrieved July 11, 2011; from Frequent Itemset Mining Dataset Repository, http://fimi.ua.ac.be/data/, donated by Ferenc Bodon.

首先,将数据集导入到列表:

>>> parsedDat = [line.split for line in open('kosarak.dat').readlines]      

接下来需要对初始集合格式化:

>>> initSet = fpGrowth.createInitSet(parsedDat)  

然后构建FP树,并从中寻找那些至少被10万人浏览过的新闻报道。

>>> myFPtree, myHeaderTab = fpGrowth.createTree(initSet, 100000)   

在我这台简陋的笔记本电脑上,构建树以及扫描100万行只需要几秒钟,这展示了FP-growth算法的强大威力。下面需要创建一个空列表来保存这些频繁项集:

>>> myFreqList = >>> fpGrowth.mineTree(myFPtree, myHeaderTab, 100000, set(), myFreqList)     

接下来看下有多少新闻报道或报道集合曾经被10万或者更多的人浏览过:

>>> len(myFreqList)9    

总共有9个。下面看看都是哪些:

>>> myFreqList[set(['1']), set(['1', '6']), set(['3']), set(['11', '3']), set(['11', '3','6']), set(['3', '6']), set(['11']), set(['11', '6']), set(['6'])]     

可以使用其他设置来查看运行结果,比如降低置信度级别。