Mahout 频繁模式挖掘

y000n520 发布于 2014/10/30 15:49
阅读 584
收藏 0

大家好  我用mahout 0,6关联规则推荐算法 代码如下:

 int minSupport = 2; 

        int maxHeapSize = 100; 

        String input = "./models/casestudy-en/lda.dat"

        String output = "output"

        FPGrowth<String> fp = new FPGrowth<String>(); 

        FileSystem fs = new RawLocalFileSystem(); 

        Configuration conf = new Configuration(); 

        String pattern = " \"[ ,\\t]*[,|\\t][ ,\\t]*\" ";     

        try

            fs = FileSystem.get(conf);


            SequenceFile.Writer writer = null

            writer = new SequenceFile.Writer(fs, conf, new Path(output), 

Text.class, TopKStringPatterns.class); 


            Charset encoding = Charset.forName("UTF-8"); 


            List<Pair<String, Long>> generateFList = null

            generateFList = fp.generateFList(new StringRecordIterator(new 

FileLineIterable(new File(input), encoding, false), 

                    pattern), minSupport); 


            StringRecordIterator transactions = null

            transactions = new StringRecordIterator(new FileLineIterable(new 

File(input), encoding, false), pattern); 


            List<Text> keyList = new LinkedList<Text>(); 

            List<TopKStringPatterns> valueList = new 

LinkedList<TopKStringPatterns>(); 

            StringOutputCollector<Text, TopKStringPatterns> collector = new StringOutputCollector<Text, TopKStringPatterns>(keyList, valueList); 

            StringOutputConverter soc = new StringOutputConverter(collector); 

            fp.generateTopKFrequentPatterns(transactions, generateFList, 

minSupport, maxHeapSize, null, soc,  new ContextStatusUpdater(null)); 

            writer.close(); 

            fs.close(); 


            System.out.println("list.size: " + valueList.size()); 

            HashSet<List<String>> unique = new HashSet<List<String>>(); 

            for (int i = 0; i < valueList.size(); i++) { 


                System.out.println(keyList.get(i) + " / " + valueList.get(i)); 

                Iterator<Pair<List<String>, Long>> iterator = valueList.get(i).iterator(); 

                while (iterator.hasNext()) { 


                    unique.add(iterator.next().getFirst()); 

                } 

            } 

lda.dat 格式文件如下:

26 104 143 320 569 620 798 

7 185 214 350 529 658 682 782 809 849 883 947 970 979 

227 390 

71 192 208 272 279 280 300 333 496 529 530 597 618 674 675 720 855 914 932 

183 193 217 256 276 277 374 474 483 496 512 529 626 653 706 878 939 

161 175 177 424 490 571 597 623 766 795 853 910 960 

但我得到的结果都是这样的 

758 914 919  / ([758 914 919 ],2)

757 970 978  / ([757 970 978 ],2)

75 90 170 185 486 675 886  / ([75 90 170 185 486 675 886 ],2)

75 355 438 606 630 684 774 883  / ([75 355 438 606 630 684 774 883 ],2)

75 355 438  / ([75 355 438 ],2)

75 325 383 460 595 775 858  / ([75 325 383 460 595 775 858 ],2)

75 308 314 487 718 775  / ([75 308 314 487 718 775 ],2)

75 258 642  / ([75 258 642 ],2)

75 212 753 800  / ([75 212 753 800 ],2)

一样的  key和value都一样  不知道问题出现在哪里

加载中
0
y000n520
y000n520
怎么没有人回答啊  
0
一只小桃子
一只小桃子

75 258 642  / ([75 258 642 ],2)

75 258 642共同出现了2次,有什么问题吗?

0
y000n520
y000n520

引用来自“一只小桃子”的评论

75 258 642  / ([75 258 642 ],2)

75 258 642共同出现了2次,有什么问题吗?

应该输出的前面一个是物品的ID 而不应该是一个购物篮的所有物品ID啊

0
一只小桃子
一只小桃子
挖出来的是频繁项集,就是这样的
0
y000n520
y000n520

引用来自“一只小桃子”的评论

挖出来的是频繁项集,就是这样的
那怎么得到 支持度和置信度  能给一个代码给我看哈嘛
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部