Mahout 频繁模式挖掘

发布于 2021-11-24 04:29:27 字数 5035 浏览 847 评论 5

大家好  我用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都一样  不知道问题出现在哪里

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

本宫微胖 2021-11-27 15:43:07

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

挖出来的是频繁项集,就是这样的

囚你心 2021-11-27 14:36:59

挖出来的是频繁项集,就是这样的

沦落红尘 2021-11-26 22:59:13

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

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

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

深巷少女 2021-11-25 21:59:21

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

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

岁月打碎记忆 2021-11-24 23:44:12

怎么没有人回答啊  

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文