当前位置: 首页 > 知识库问答 >
问题:

mapreduce条件概率

姚胡媚
2023-03-14

>

  • 每对项目的共现,Count(A,B)=#html" target="_blank">事务包含A和B,条件概率Prob(BA)=Count(A,B)/Count(A).
  • 每三个项目的共现,Count(A,B,C)=#事务包含A和B,条件概率Prob(AB,C)=Count(A,B,C)/Count(B,C)
  • 每行记录一个事务(一起购买的一组项):输入数据集是具有以下格式的事务数据:

    25 52 164 240 274 328 368 448 538 561 630 687 730 775 825 834 39 120 124 205 401 581 704 814 825 825 857 857 937 954 964 153 229 262 283 283 883 883 966 966 978 268 26 104 143 320 569 620 853 883 970 979 227 658 658 682 782 803 883 883 970 979 227 192 208 272 272 882 803 882 882 882 882 882 882 882 882 882 882 882 882 882 883 883 883 970 979 227 192 192 882 882 882 882 882 882 882 882 882 882 882 882 882 882=========================================================================================================================

  • 共有1个答案

    袁帅
    2023-03-14

    对你的问题的简短回答是,你不能在映射器之间直接通信······这与map-reduce计算模式背道而驰。相反,您需要构造您的算法,以便map阶段输出的键值可以被reducer阶段以智能的方式消耗和聚合。

    从你在问题中的背景信息,很明显,你明白,计算你感兴趣的条件概率实际上只是一个计算练习。这里通常的模式是在一个map-reduce过程中完成所有的计数,然后获取这些输出并在之后划分适当的数量(试图将它们处理到map-reduce过程中会增加不必要的复杂性)

    您实际上只需要一个数据结构来跟踪您试图计数的东西。如果速度是必须的,您可以使用一组带有隐式索引的数组来实现这一点,但是通过单个HashMap来实现说明是很简单的。因为我们不感兴趣

    import sys
    output={}
    
    
    for line in sys.stdin:
       temp=line.strip().split('\t')
       # we should sort the input so that all occurrences of items x and y appear with x before y
       temp.sort()
       # count the occurrences of all the single items
       for item in temp:
          if item in output:
             output[item]+=1
          else:
             output[item]=1
    
    
       #count the occurrences of each pair of items
       for i in range(len(temp)):
          for j in range(i+1,len(temp)):
             key=temp[i]+'-'+temp[j]
             if key in output:
                output[key]+=1
             else:
                output[key]=1
       #you can triple nest a loop if you want to count all of the occurrences of each 3 item pair, but be warned the number of combinations starts to get large quickly
       #for 100 items as in your example there would be 160K combinations
    
    
    #this point of the program will be reached after all of the data has been streamed in through stdin
    #output the keys and values of our output dictionary with a tab separating them
    for data in output.items():
       print data[0]+'\t'+data[1]
    
    #end mapper code
    
     类似资料:
    • 在概率公理中,我们建立了“概率测度”的概念,并使用“面积”来类比。这是对概率的第一步探索。为了让概率这个工具更加有用,数学家进一步构筑了“条件概率”,来深入探索概率中包含的数学结构。我们可以考虑生活中常见的一个估计: 三个公司开发一块地。A占地20%,B占地30%,C占地50%。三个公司规划的绿地占比不同:A土地中40%规划为绿地,B土地中的30%规划为绿地,C土地中的10%规划为绿地。我想选择绿

    • 主要内容:1.相关概念,2.Tracker,3.MapReduce体系1.相关概念 Task为真正干活的 2.Tracker 2.1 JobTracker 2.2 TaskTracker 3.MapReduce体系 总体图 过程图 总结

    • package com.run.ayena.distributed.test; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apa

    • package com.run.ayena.distributed.test; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.h

    • 一、背景 最近总在弄MR的东西,所以写点关于这个方面的内容,总结一下吧 二、流程描述 说实话,文字描述比较苍白,画了个图,贴出来,大家看看,有问题欢迎指出 三、总结 1、值得提出的是,一个map结束就马上会进行分区的操作。并非是等所有的map都结束才做分区的操作。 2、分组的操作是对key的值进行比较分组。(可以是复合key,也可以是单一的key) 3、关于job.setSortComparato

    • 我是R的新手,我试图创建一个条件概率图,测试前概率在x轴,测试后概率在y轴。与链接条件概率图中的类似。我需要为阳性测试绘制点,并用一条线将它们连接在一起,为阴性测试绘制点,并用一条线将这些点连接在一起,在同一个图上。 我有数据:阴性<代码>测试前测问题<-c(0,10,20,30,40,50,60,70,80,90,100)测试后测问题<-c(0,3,7,11,17,22,30,40,53,72,