我写的Ap聚类备忘

1. StartDriver.java是程序入口,只需运行这个程序即可
ApClusterParameters.java是程序的一些参数设置。[color=red]必须由你自己重新设定的是[/color]“pointsTotalNum”=总共多少个点,“inputSARFilePath”=包含similarity/availability/responsibility的输入文件。 [color=red]可以自由设定(不一定重新设定)[/color]的参数是“expectedInputFileNum”= inputSequenceFiles的个数(程序把pointIndexes 均匀地写入这些文件中,格式为<pointIndex,"">...expectedInputFileNum实际上等于map.task.num,[color=red]所以你想要多少个maptasks的话就设这个数expectedInputFileNum为多少[/color]), “iterateNum”=迭代计算responsibility&availability的次数,"lam"=收敛系数,不知道怎么设定,按论文的先设定为0.5

[color=red]其他参数不用管[/color]

2.注意我原来的输入文件(inputSARFile即Data_25,可参照package的底下Data_25这个文件)的格式(保留原来hyp的格式): rowIndex/columnIndex:similarity/availability/responsibility ...如果你要用自己的输入格式,ok,只需模仿着去改ApUtil.java中的putSARIntoHBaseTable函数,把similarity和availability(初始为0)和responsibility(初始为0)的值放进hbase即可。[color=red]一定注意[/color]存在hbase中一行(一个row_key)的responsibility是实际中的responsiblity这个矩阵的一列(即按列存到hbase里面)为什么要按列存,因为计算一列avail的时候是要取一列respo的。

3.所有mapreduce的任务的输入文件路径都是ApClusterParameters.inputSequenceFilePath.文件中只存point index<new IntWritable(pointIndex), new Text("")>,真正计算是到hbase里拿值,计算,存值到hbase

4.CalResponsibility(Driver/Mapper):计算responsibility(参照论文的公式1),一个map函数计算一[color=red]行(第ith行)[/color]responsiblity(需要取出第ith行 similairty 和第ith行availability).[color=red]注意比论文的公式中多了一个lam[/color] 收敛系数,见论文本的第9页matlab代码

5.CalAvailability(Driver/Mapper):计算availability(参照论文公式2(i==k),公式3(i!=k)).一个map函数计算一[color=red]列(第kth列)[/color]availability(需要取出第kth列的respo([color=red]所以一开始时resposibility按列存,可以一次性取出一列[/color])).注意也比论文的公式中多了一个lam[/color] 收敛系数

[color=red]所以注意CalResponsibility时map函数是按行计算的。CalAvailability时map是按列计算的[/color]

6. FindClusters(Driver/Mapper/Reducer)是找出中心,矩阵a+r中[color=red]对角[/color]元素[color=red]大于0[/color]的可以作为中心center.

7.AssignPointsToCluster(Driver/Mapper/Reducer)是把各个点赋到各个中心上去。对于点i,寻找a+r这一行中使a(i,center)+r(i,center)最大值的那个center作为i的中心。

8.cluster result输出格式为sequenceFile,只是打印出来,如要把结果输出到文本格式中,请自行处理一下。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值