正在加载图片...
.30. 智能系统学报 第9卷 出中间结果(Key3,Vaue3)对的形式为(“e,Ib”,1)。 个数,利用suml/sum_no求得条件概率P(e,Ib),并 Map2过程伪代码如下。 以成员变量wiin_unnomal存储;若Key4值为“e;I 输入:Object、Text。 僵尸”,统计的Value4的行数suml为w:在阈值外且 输出:Text、Int Writable 属于僵尸网络个数,利用suml/sum_no求得条件概 map(Key,Value) 率P(w:Ib),并以成员变量wi_out_unnomal存储。 StringTokenizer itr=new StringTokenizer(value. Reduce2过程伪代码如下。 toString()); 输入:Text、Int Writable String[temp=new String[9]; 输出:Text、Float Writable. While(itr.hasMoreTokens()) Reduce(Key、Value) {temp[i]=ir.nextToken();//属性字符串数组 for(Int Writable val:value) i++; Suml+=val.get():/key为不同的条件字 If Float.parsefloat temp [2])>140 &Float. 符串,则统计的是满足不同条件的网络数据行数 parsefloat(temp[2])<150) f(temp[8].equals(“0”)) /计算Key字符串长度length Context.write("w In",1); /截取条件字符串Key最后2个字符msg_ Else temp Context..write(“o1lb”,1); If(msg_temp.equals(“n”))/若属于正常网络 Else {Float result=suml/sum_yes;//计算条件概率 If(temp[8].equals(“0”)) If(Key.equals(“w,ln”)) Context.write(“w,ln”,l); wl_in_nomal=result;/成员变量存储属性 Else 列1在阈值内且属于正常网络条件概率 Context.write(“w,lb”,l); Else if(Key.equals(“w;In”)) /其他5个属性列训练过程同上。 wl_out_normal=result;/成员变量存储属 } 性列1在阈值外且属于正常网络条件概率 经过Map2把分块的每行信息都处理成以 /其他5个属性列计算在阈值内、外属于正常 〈Key3,Value23)形式的等待整体处理的中间文件输 网络的条件概率同上 出,MapReduce框架将每个Map2输出的中间文件 Else 的结果按照Key值(,ln、:In、:lb、:Ib)进行分 组形成新的(Key4,Value44〉对,形式为(条件字符 {Float result=suml/sum_no;/计算条件概率 If(Key.equals(“e,lb”)) 串,{1,1,…,1})。 wl_in_unnormal=result:/成员变量存储 Reduce.2接收到的信息为(Key4,Value4)。Re 属性列1在阈值内且属于僵尸网络条件概率 duce2的任务是对Key4相同的中间结果计数,若 Key4值为“w:ln”,统计的Value4的行数suml为e: Else if(Key.equals(“w:Ib”)) 在阈值内且属于正常网络个数,利用suml/sum_yes wl_out_unnormal=result:/成员变量存储 求得条件概率P(w:ln),并以成员变量wi_in_nomal 属性列1在阈值内且属于僵尸网络条件概率 /其他5个属性列计算在阈值内、外属于僵尸 存储;若Key4值为“w:In”,统计的Value4的行数 网络的条件概率同上 suml为心:在阈值外且属于正常网络个数,利用 suml/sum_yes求得条件概率P(w:ln),并以成员变 Context..wite(Key,result);//输出条件概率 量wi_out_nomal存储;若Key4值为“w:Ib”,统计的 } Value4的行数suml为w:在阈值内且属于僵尸网络 由于MapReduce.2要对训练数据的6个属性列出中间结果〈Key3,Value3〉对的形式为〈“wi |b”,1〉。 Map2 过程伪代码如下。 输入:Object、Text。 输出:Text、IntWritable。 map(Key,Value) {StringTokenizer itr = new StringTokenizer( value. toString()); String[] temp = new String[9]; While(itr.hasMoreTokens()) {temp[i] =itr.nextToken();/ / 属性字符串数组 i++; } If ( Float. parsefloat ( temp [ 2]) > 140 && Float. parsefloat(temp[2])<150) If(temp[8].equals(“0”)) Context.write(“w1 | n”,1); Else Context.write(“w1 | b”,1); Else If(temp[8].equals(“0”)) Context.write(“ w1 | n”,1); Else Context.write(“ w1 | b”,1); / / 其他 5 个属性列训练过程同上。 } 经过 Map2 把 分 块 的 每 行 信 息 都 处 理 成 以 〈Key3,Value3〉形式的等待整体处理的中间文件输 出,MapReduce 框架将每个 Map2 输出的中间文件 的结果按照 Key 值(wi | n、 wi | n、wi | b、 wi | b)进行分 组形成新的〈 Key4,Value4〉 对,形式为〈 条件字符 串,{1,1,…,1 }〉。 Reduce2 接收到的信息为〈Key4,Value4〉。 Re⁃ duce2 的任务是对 Key4 相同的中间结果计数,若 Key4 值为“wi | n”,统计的 Value4 的行数 sum1 为 wi 在阈值内且属于正常网络个数,利用 sum1 / sum_yes 求得条件概率 P(wi | n),并以成员变量 wi_in_nomal 存储; 若 Key4 值为“ wi | n”,统计的 Value4 的行数 sum1 为 wi 在阈值外且属于正常网络个数,利用 sum1 / sum_yes 求得条件概率 P( wi | n),并以成员变 量 wi_out_nomal 存储;若 Key4 值为“wi | b”,统计的 Value4 的行数 sum1 为 wi在阈值内且属于僵尸网络 个数,利用 sum1 / sum_no 求得条件概率 P(wi | b),并 以成员变量 wi_in_unnomal 存储;若 Key4 值为“ wi | 僵尸”,统计的 Value4 的行数 sum1 为 wi在阈值外且 属于僵尸网络个数,利用 sum1 / sum_no 求得条件概 率 P( wi | b),并以成员变量 wi_out_unnomal 存储。 Reduce2 过程伪代码如下。 输入:Text、IntWritable。 输出:Text、FloatWritable。 Reduce(Key、Value) {for(IntWritable val:value) { Sum1+ = val.get( ); / / key 为不同的条件字 符串,则统计的是满足不同条件的网络数据行数 } / / 计算 Key 字符串长度 length / / 截取条件字符串 Key 最后 2 个字符 msg _ temp If(msg_temp.equals(“n”)) / / 若属于正常网络 {Float result = sum1 / sum_yes; / / 计算条件概率 If(Key.equals(“w1 | n”)) w1_in_nomal = result; / / 成员变量存储属性 列 1 在阈值内且属于正常网络条件概率 Else if(Key.equals(“ wi | n”)) w1_out_normal = result; / / 成员变量存储属 性列 1 在阈值外且属于正常网络条件概率 / / 其他 5 个属性列计算在阈值内、外属于正常 网络的条件概率同上 } Else {Float result = sum1 / sum_no; / / 计算条件概率 If(Key.equals(“w1 | b”)) w1_in_unnormal = result; / / 成员变量存储 属性列 1 在阈值内且属于僵尸网络条件概率 Else if(Key.equals(“ wi | b”)) w1_out_unnormal = result; / / 成员变量存储 属性列 1 在阈值内且属于僵尸网络条件概率 / / 其他 5 个属性列计算在阈值内、外属于僵尸 网络的条件概率同上 } Context.write(Key,result);/ / 输出条件概率 } 由于 MapReduce2 要对训练数据的 6 个属性列 ·30· 智 能 系 统 学 报 第 9 卷
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有