讀古今文學網 > 機器學習實戰 > 12.5 示例:從新聞網站點擊流中挖掘 >

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'])]   
  

可以使用其他設置來查看運行結果,比如降低置信度級別。